Tempo de execução do script

5 respostas
C

Olá povo!

Tenho um servlet que chama um script no unix através de uma url. Esse script executa alguns processos e retorna um resultado que dependendo da resposta o servlet envia o resultado pro cliente.

O problema:
o script as vezes demora um pouco, mas é executado, porém o servlet não espera a conclusão do script.

O servlet dá a resposta que deu erro, mas não deu! Ele não esperou a conclusão do script.

Alguém tem uma idéia de como eu faço o servlet esperar o script concluir seu processo? Uma vez que eu não tenho tempo fixo…

Valeu!

5 Respostas

T

Dá para você modificar seu script para que ele retorne imediatamente e deixe o processo que você quer rodar em background? Aí esse processo, ao terminar, pode gravar um arquivo de controle ou alguma coisa.

No Unix é relativamente fácil deixar algo em background ("blablabla > saida.txt &" ou "nohup blablabla > saida.txt &" ) .

Você pode dividir sua página em duas: uma que simplesmente dispara o processo, e retorna ao cliente “A sua solicitação foi encaminhada, retorne aqui para ver se já foi processada” ou coisa parecida, e outra que checa se o processo já terminou (por exemplo, checando a existência do arquivo de controle).

C

vou tentar algo do tipo. Valeu!

rubinelli

Se você precisar mesmo esperar o script para ver que resposta ele dá, é possível ajustar o request time-out do web container. Mas aí a configuração varia de servidor pra servidor.

C

dá pra se mais claro? como implementaria isso?

rubinelli

Dá. :slight_smile: Como eu disse, a maioria dos servidores deixam você alterar quanto tempo esperar o servlet responder antes de dar um erro de timeout, mas onde configurar isso vai depender de qual servidor você está usando. De qualquer forma, se o script for demorar mais do que um ou dois minutos, a solução do thingol é melhor.

Criado 1 de novembro de 2007
Ultima resposta 1 de nov. de 2007
Respostas 5
Participantes 3