[Cascavel-pm] monitoração de processamento

Ednardo Lobo ednardo em lobosnet.com
Terça Setembro 30 13:48:26 CDT 2003


On Tue, Sep 30, 2003 at 03:00:23PM -0300, Alceu R. de Freitas Jr. wrote:
> Olá lista,
> 
> Está dúvida é  mais conceitual do que diretamente  relacionada à Perl,
> mas lá vai...
>
> Imaginem que quero  executar um processo mediante  requisição HTTP com
> um CGI. Digamos  que esse processamento demore, então não  quero que o
> usuário  pense que  o servidor  parou  de responder:  quero abrir  uma
> janela usando a  meta tag de refresh (no documento  HTML), mostrando o
> progresso do processamento. O processo que roda no servidor pode gerar
> uma saída, com por exemplo 23/80 (23 processados de 80). Eu quero que,
> cada vez que o refresh da página ocorra, o CGI receba uma requisição e
> atualize  o status  da  página. Até  onde pensei,  eu  teria que  usar
> cookies  ou campos  ocultos ou  ainda colocar  parâmetros na  URL para
> o  CGI  identificar que  o  usuário  em  questão  já tem  um  processo
> executando...
>
> O  CGI  no  caso  identifica  a  requisição  (já  "antiga"),  checa  o
> processamento rodando e sua apresenta sua saída.
>
> Queria fazer  algo dinâmico, não  ficar sobreescrevendo uma  página em
> html no servidor.
>
> Eu apreciaria idéias,  mesmo que implementem de forma  diferente o que
> eu pensei aqui.
>
> Abraços,
> 

    Não  sou um  "expert" em  protocolo HTTP  e nem  em JavaScript,  mas
conheço bem o funcionamento do protocolo e um pouco de como o JavaScript
atua  no  navegador. Entretanto,  tenho  quase  certeza que  enquanto  o
navegador aguarda  o retorno de  uma requisição nenhuma  outro operação,
nem mesmo via JavaScript pode ser realizada no navegador. Então acho que
usar JavaScript para gerar um status de processamento não é a saída.

    O servidor  HTTP, entretanto, devolve  a saída do  "script" acionado
via CGI, se esse estiver com o  seu dispositivo de <OUTPUT> no modo "não
bufferizado" ($| = 1),  a medida que ela for sendo  gerada. Você pode se
valer  disso para  retornar  informações  ao navegador  a  medida que  o
"script" é processado. E essa  saída poderá ser em formado 'text/plain',
'text/html' e até mesmo 'image/*'. Com isso, você permitir que o usuário
acompanhe  o  processamento  do  'script'  da  maneira  que  achar  mais
intuitiva, seja através de uma barra de progresso em texto ou gráfica.

    Estou  certo  de que  isso  funciona,  entretanto,  não sei  como  o
navegador irá compor a barra de progresso, caso essa seja uma imagem.

    Provavelmente, há  outras maneiras  de se fazer  isso e  gostaria de
conhecê-las. Se alguém tiver alguma outro sugestão ...

    Alceu, se chegar  a implementar a solução que propus,  por favor, me
dê um feedback.


    Boa sorte,
    
-- 
    Ednardo Lobo

    LOBO's NET - www.lobosnet.com



Mais detalhes sobre a lista de discussão Cascavel-pm