Corrigir “Maximum execution time exceeded”

“Maximum execution time of N seconds exceeded” quer dizer que o script demorou mais do que o max_execution_time do PHP permite e foi cortado a meio. Subir esse valor ajuda quando o trabalho é legitimamente demorado. Quando a demora é um defeito (uma consulta lenta, um serviço externo que não responde), subir o valor só esconde o problema.

Porque demora tanto

Causa Como se reconhece O que fazer
Tarefa legitimamente longa (importar, exportar, gerar relatório) Acontece sempre no mesmo botão, e só aí. Suba o limite para essa pasta, ou passe o trabalho para uma tarefa agendada.
Consulta à base de dados lenta O site inteiro fica lento, não só uma acção. Veja consultas lentas. O limite não é o problema.
Chamada a um serviço externo que não responde A demora varia, e falha sem aviso. Ponha um tempo máximo na própria chamada, e trate a falha.
Ciclo infinito no código Falha de imediato e sempre. Corrija o código. Nenhum limite chega.

Subir o limite, se for o caso

1 Em Select PHP Version, separador Options, procure max_execution_time e escolha um valor acima do actual. Está em segundos.
2 Para uma só aplicação, ponha uma linha max_execution_time = 120 (exemplo) num .user.ini na pasta dela. Veja onde pôr cada valor.
3 Se o trabalho envia um ficheiro, veja também o max_input_time, que conta o tempo de receber os dados.
4 Repita a acção. Se agora passa, pare. Se continua a falhar com um valor muito mais alto, a causa é outra e está na tabela acima.

Descobrir onde o tempo vai

1 Repita com menos dados. Importe um ficheiro mais pequeno, exporte um período mais curto. Se passa, o problema é o volume, e a solução é dividir o trabalho em lotes.
2 Veja a linha do erro. A mensagem de “Maximum execution time” diz o ficheiro e a linha onde o PHP estava quando foi cortado. É quase sempre perto do ponto lento.
3 Desligue os plugins um a um, se for WordPress, e repita a acção. Um plugin que chama um serviço externo é um suspeito habitual.
O PHP não é o único relógio. O servidor web e os limites da conta têm os seus. Se subiu o valor e a página continua a morrer, o erro que vê já não é do PHP: pode ser um 503, 504 ou 508. Veja os erros do site explicados e os limites que ninguém anuncia.
Pôr o tempo a zero não é uma solução. Um script sem limite que fique preso ocupa um processo da sua conta até alguém o parar, e gasta os recursos que outros pedidos do seu site precisam.
O que é longo, faz-se fora do navegador. Por linha de comandos ou por cron o pedido web desaparece, e com ele a maior parte destes cortes. Divida o trabalho em lotes pequenos que se repetem: é mais robusto do que um lote enorme. Veja correr um script PHP numa tarefa agendada.

A página continua a cortar com um limite alto? Envie-nos o endereço, a hora a que aconteceu e a mensagem.

Abrir um pedido de suporte

VEJA TAMBÉM

Os limites do PHP: memória, tempo e tamanho de upload

Correr um script PHP numa tarefa agendada

Erros do site explicados: 500, 403, 404, 508

Onde está o registo de erros do PHP

PRODUTO RECOMENDADO

Alojamento de sites com cPanel

Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde $6.60/mês (plano de 3 anos, com cupão)

Ver planos
  • 0 Utilizadores acharam útil
Esta resposta foi útil?