O erro “Maximum execution time exceeded” é um dos problemas mais comuns em aplicações PHP, especialmente em sistemas que executam relatórios pesados, importações de arquivos, integrações com APIs externas ou rotinas administrativas demoradas. Ele acontece quando um script ultrapassa o tempo máximo permitido para execução e o PHP interrompe o processamento para evitar que uma requisição fique presa indefinidamente no servidor.
Apesar de ser tentador resolver o problema apenas aumentando o valor de max_execution_time, essa nem sempre é a melhor abordagem. Em muitos casos, o erro é apenas o sintoma de uma consulta SQL mal otimizada, uma chamada externa sem timeout, um loop excessivo, uma rotina que deveria rodar em segundo plano ou uma configuração de servidor inadequada para o volume de dados processado.
O que é o max_execution_time no PHP?
A diretiva max_execution_time define, em segundos, o tempo máximo que um script PHP pode executar antes de ser encerrado. Em muitos ambientes, o valor padrão é de 30 segundos, mas isso pode variar conforme a configuração do servidor, painel de hospedagem, PHP-FPM, Apache, Nginx ou ambiente CLI.
Em sistemas web, esse limite é importante porque protege o servidor contra scripts travados ou mal escritos. Sem esse controle, uma única requisição pesada poderia consumir recursos por tempo indefinido, prejudicando os demais usuários do site ou sistema.
Quando aumentar o limite faz sentido?
Aumentar o limite pode ser aceitável quando o comportamento é esperado. Por exemplo, uma rotina interna de importação de dados, geração de PDF, processamento de imagens ou sincronização com um serviço externo pode realmente precisar de mais tempo para ser concluída. Nesses casos, o ajuste deve ser feito com cuidado e, preferencialmente, apenas para o contexto necessário.
%%OZI_ILB_PROTECT_d3e5d457857f215c5299e1f6daeebeaa%%
Depois de alterar o php.ini, normalmente será necessário reiniciar ou recarregar o serviço responsável pelo PHP. Em servidores com PHP-FPM, isso pode ser feito com um comando semelhante ao exemplo abaixo, ajustando a versão instalada no servidor.
%%OZI_ILB_PROTECT_70500bf6b8be7fab6605de99033e83b2%%
Também é possível ajustar o tempo em pontos específicos do código, mas essa prática deve ser usada com cautela. Ela pode ser útil em scripts administrativos ou comandos internos, mas não deve mascarar gargalos graves de desempenho.
%%OZI_ILB_PROTECT_52304e7452be416896f771b0eb9dd9da%%
Por que aumentar o tempo nem sempre resolve?
Se o script está demorando porque executa uma consulta SQL sem índice, aumentar o limite apenas fará o usuário esperar mais. Se a aplicação faz centenas de chamadas repetidas ao banco de dados, o problema continuará existindo. Se uma API externa está lenta e a chamada HTTP não possui timeout configurado, o script poderá continuar travando em horários de instabilidade.
Por isso, antes de alterar o limite de execução, é importante investigar o que está consumindo tempo. Em aplicações PHP, alguns pontos merecem atenção especial: consultas SQL lentas, loops sobre grandes volumes de dados, geração de arquivos muito grandes, integrações externas sem timeout, envio de e-mails dentro da requisição e processamento de imagens sem fila.
Como diagnosticar a causa do erro
O primeiro passo é consultar os logs da aplicação, do PHP-FPM e do servidor web. Em ambientes Linux, os logs geralmente indicam qual arquivo ou rota ultrapassou o tempo limite. Se o problema estiver relacionado a uma página específica, é importante medir o tempo de cada trecho da rotina.
%%OZI_ILB_PROTECT_99ea3fc22ba793510fc6a56182df70c8%%
Em sistemas com banco de dados, também vale verificar as queries executadas. Uma consulta sem índice pode transformar uma tela simples em uma operação pesada. Quando o problema estiver relacionado ao MySQL ou MariaDB, ferramentas como EXPLAIN, slow query log e análise de índices costumam revelar rapidamente o gargalo.
Temos um conteúdo complementar sobre esse tema no artigo Como otimizar consultas SQL lentas, que ajuda a entender como identificar consultas problemáticas antes que elas afetem o sistema inteiro.
Use filas para tarefas demoradas
Uma boa prática é não executar tarefas pesadas diretamente durante a requisição do usuário. Importações, geração de relatórios grandes, envio em massa de e-mails, webhooks, integrações e processamento de arquivos devem, sempre que possível, ser enviados para uma fila.
Com uma fila, o usuário solicita a tarefa, o sistema registra o processamento e um worker executa a rotina em segundo plano. Isso reduz o risco de timeout, melhora a experiência do usuário e evita que o PHP-FPM fique ocupado por longos períodos em uma única requisição.
Redis, RabbitMQ, bancos de dados e até filas simples baseadas em tabela podem ser utilizados, dependendo do tamanho do projeto. O importante é separar aquilo que precisa de resposta imediata daquilo que pode ser processado de forma assíncrona.
Quando o erro vira 504 Gateway Time-out
Em servidores com Nginx, o usuário pode não ver diretamente o erro do PHP. Em vez disso, pode aparecer um 504 Gateway Time-out, indicando que o servidor web esperou demais pela resposta do PHP-FPM. Nesse cenário, além do max_execution_time, também pode ser necessário revisar timeouts do Nginx, PHP-FPM e proxy reverso.
Esse tipo de situação é abordado no artigo Erro 504 Gateway Time-out em rotas pesadas, que complementa a análise quando o problema aparece na camada do servidor web.
Conclusão
O erro “Maximum execution time exceeded” deve ser tratado como um alerta de desempenho. Em alguns casos, aumentar o limite de execução é necessário, mas a correção definitiva geralmente envolve entender por que o script está demorando, otimizar consultas, revisar integrações externas e mover tarefas demoradas para filas.
A Saldaris Consultoria atua com diagnóstico, correção e otimização de sistemas PHP, servidores Linux, aplicações web e integrações. Se sua empresa enfrenta erros de timeout, lentidão em rotas específicas ou problemas recorrentes de desempenho, entre em contato pelo formulário abaixo para avaliarmos o cenário.
Erro: Formulário de contato não encontrado.

