O script PHP expirou ou foi morto no Apache no CentOS (host compartilhado)

1

Ao tentar executar um script PHP (CentOS, Apache, PHP 5.2), que pode levar um longo tempo, ele aparentemente é eliminado após 45 minutos.

O script PHP é invocado a partir de um navegador da Web e, em determinadas situações, ele trabalhará muito no processamento de uma caixa de correio POP3 e no envio de e-mails como parte de um sistema de monitoramento automatizado.

A execução do script PHP a partir da linha de comando pode ser uma opção melhor, mas quero entender o que está acontecendo até agora.

Eu executei um script de teste e ele pareceu dar um erro interno no servidor (500?) após 45 minutos.

Onde está esse limite definido e o que está matando o script, se é isso que está acontecendo?

Ele está sendo executado em um host compartilhado no Hostgator.com.

    
por MarkS 31.08.2012 / 00:18

3 respostas

1

Eu suponho que você já tenha set_time_limit (0) em PHP para desligar o tempo de execução do PHP max para aquele script específico? link

Se você não tentou - provavelmente é a resposta - se você tentou - então continue lendo ...

O Linux permite que você configure um tempo máximo de execução para processos do usuário - hosts compartilhados geralmente fazem isso como um método seguro para matar quaisquer scripts que travam (caso contrário você pode ter que reiniciar o servidor para eliminá-los - no mínimo um sysadmin para fazer isso manualmente)

Não consigo encontrar as informações que vi antes - tenho certeza de que é uma extensão desse link

De qualquer forma, você terá que encontrar uma maneira de acelerar seu script. Por que leva 45 minutos para ser executado? Você pode quebrá-lo em segmentos? - Aguardar 45 minutos por uma resposta de um servidor web não é realmente utilizável (e se você clicar em atualizar e executar o seu script várias vezes - ou um web-spider o atingir e disparar sem você saber ... o servidor pode ser negativamente afetado?)

    
por 31.08.2012 / 00:58
0

O Hostgator tem um tempo máximo de execução de script PHP de 30 segundos.

Variáveis PHP.ini do Hostgator que não podem ser alteradas

Quanto ao seu script, se o script for encerrado e reiniciado, o script começa de onde parou? Se assim for, empregos CRON pode ser uma boa idéia para você

Suporte para Hostgator - Empregos em Cron

Parece que o hostgator também não permite que tarefas CRON sejam executadas em intervalos menores que 15 minutos.

Espero que isso ajude!

    
por 31.08.2012 / 04:10
0

É com isso que o suporte do Hostgator voltou:

On our shared servers, we do have automated monitoring systems that will interrupt processes based on certain resource usage to promote a stable environment. One of the limits we have in place is, as you have discovered, a 45-minute maximum run time for any user process. We can confirm that if you were to run this script in a shell or via the php exec(), etc, it would still be killed after 45 minutes.

You can get around this limitation by executing the script outside of our shared environment, for instance on a VPS or dedicated server.

    
por 01.09.2012 / 01:53