[SPIP] PUBLIE : Estou a receber mensagens “Maximum execution time exceeded”

SPIP

Article validé

L’article « Estou a receber mensagens “Maximum execution time exceeded” » vient d’être publié par Ricardo Porto.


Estou a receber mensagens “Maximum execution time exceeded”

sexta-feira 6 de Dezembro de 2024, por Ricardo Porto

Para evitar que um erro de programação nos scripts PHP bloqueie o funcionamento do servidor, os hosts definem um tempo máximo de execução para cada página PHP. Este limite é geralmente definido em 30 segundos: se uma página “sai” num cálculo que demora mais de 30 segundos (um cálculo enorme, ou um loop infinito), o servidor interrompe o cálculo e indica-o com uma mensagem de erro. Para o SPIP, este limite de 30 segundos é mais que suficiente para realizar todos os seus cálculos.

No entanto, alguns hosts definem durações máximas muito curtas. Este é particularmente o caso no Free (15 segundos) e no Online (8 segundos). Além disso, com estes hosts, a memória alocada ao funcionamento do PHP é bastante baixa, o que retarda a execução. Assim, as funções SPIP, com estes hosts, demoram mais tempo a ser executadas, e a duração máxima para a sua execução é ridiculamente curta. Imagine um comboio que só pode circular durante uma hora e que deve percorrer uma distância de 120 quilómetros em linhas onde a velocidade está limitada a 60 km/h: a meio caminho o comboio irá parar em campo aberto.

Este problema é encontrado sistematicamente em artigos longos: nestes hosts, o cálculo destas páginas é interrompido pelo servidor antes da conclusão dos cálculos, o que impede a sua exibição e provoca a mensagem de erro “Maximum execution time exceeded”.

Não há nenhuma solução técnica. O SPIP já foi amplamente optimizado para correr mais rápido, o problema está, de fato, nos hosts.

Única solução imediata: ficar alojado noutro lugar, com hosts que forneçam um serviço utilizável e não restrito ao extremo. Se tiver acesso à configuração do PHP (ficheiro /etc/php/apache/php.ini no Linux), deverá modificar o parâmetro max_execution_time.

Escreva ao gestor de alojamento a pedir-lhe que aumente o tempo máximo de execução do script (30 segundos como todos os outros, por exemplo). Nunca se sabe, talvez a longo prazo… Mas, por enquanto, a falta de reações parece indicar mais um desejo deliberado de restringir o alojamento gratuito para forçar os webmasters a mudar para alojamento pago do que um verdadeiro imperativo técnico.

— Enviado por SPIP