Erro fatal: tempo máximo de execução de 30 segundos excedido

397

Estou baixando um arquivo JSON de uma fonte online e, quando ele é executado no loop, estou recebendo este erro:

Erro fatal: tempo máximo de execução de 30 segundos excedido em C: \ wamp \ www \ temp \ fetch.php na linha 24

Harsha MV
fonte
11
possível duplicação do Tempo máximo de execução de 60 segundos excedida, o que já é uma duplicata de três outras. Por favor, use a função de pesquisa antes de perguntar.
Gordon
"A função set_time_limit () e a diretiva de configuração max_execution_time afetam apenas o tempo de execução do próprio script. Qualquer tempo gasto em atividades que ocorram fora da execução do script, como chamadas do sistema usando system (), operações de fluxo, consultas ao banco de dados, etc. não está incluído na determinação do tempo máximo em que o script está em execução. Isso não ocorre no Windows "Da documentação do PHP
Jacob Sánchez

Respostas:

722

Seu loop pode ser interminável. Caso contrário, você pode estender o tempo máximo de execução como este:

ini_set('max_execution_time', 300); //300 seconds = 5 minutes

e

set_time_limit(300);

pode ser usado para estender temporariamente o limite de tempo.

Michiel Pater
fonte
95
set_time_limit (300) pode ser usado para estender temporariamente o limite de tempo.
21713 Omn
Esse conjunto é definido apenas para esse script ou afetará todos os outros scripts executados após este no mesmo servidor?
Rao
11
@Rao sim, isso será apenas para esse script. Para torná-lo para todos os scripts, você precisa alterá-lo no arquivo php.ini. você também pode fazer set_time_limit (0); se quiser que o script para ser executado sempre, ou por um longo tempo
Haseeb
31
ini_set ('max_execution_time', 0); // no limit
Junaid Atari
3
@sangam Eu diria que é uma prática recomendada manter esse limite o mais baixo possível, permitindo uma certa quantidade de buffer extra. Por motivos de segurança, eu não gostaria de desativá-lo completamente. Deve ser definido como razoável. Na verdade, defino-o como o dobro do tempo que meu script mais longo leva para ser concluído em um nível médio de estresse do servidor. Ainda assim, sempre pode falhar. Portanto, a melhor prática também é lidar com problemas de tempo limite para scripts demorados separadamente.
Hafenkranich 13/11
185

Eu tive o mesmo problema e resolvi-o alterando o valor para o param max_execution_timein php.ini, assim:

max_execution_time = 360      ; Maximum execution time of each script, in seconds (I CHANGED THIS VALUE)
max_input_time = 120          ; Maximum amount of time each script may spend parsing request data
;max_input_nesting_level = 64 ; Maximum input variable nesting level
memory_limit = 128M           ; Maximum amount of memory a script may consume (128MB by default)

Espero que isso possa ajudá-lo.

Güilber J. Castillo
fonte
11
Por alguma razão, o ini_set não está funcionando, mas isso ajuda com certeza!
Gabrjan
php.inipode ser encontrado em /etc/php5/apache2/php.ini.... Estou usando o ubuntu 13.04 ...
Enissay
Eu tive mesmo problema ao instalar o moodle no wamp mas resolvido configurando arquivo php.ini
Muhammad Irfan
11
Precisa reiniciar o apache após a alteração no php.ini
spideringweb
[php7] - sudo nano /etc/php/7.0/apache2/php.ini
Chris Lambrou
46

Todas as respostas acima estão corretas, mas em alguns casos utilizo uma maneira simples de evitá-la.

Basta colocar este comando no início do seu script:

set_time_limit(0);
Massa
fonte
9
Isso não é recomendado
eu sou a pessoa mais estúpida
11
O limite de tempo desativado não protege contra loops infinitos; portanto, sempre configure um limite (maior).
precisa saber é
@IamtheMostStupidPerson Por que não? Se você usá-lo como localhost
Fernando Torres
23

Corri para esse problema ao atualizar para o WordPress 4.0 . Por padrão, o WordPress limita o tempo máximo de execução para 30 segundos.

Adicione o seguinte código ao seu arquivo .htaccess no diretório raiz da instalação do WordPress para substituir o padrão.

php_value max_execution_time 300  //where 300 = 300 seconds = 5 minutes
Fahim Hossain
fonte
18

Editar php.ini

Encontre esta linha:

max_execution_time

Altere seu valor para 300:

max_execution_time = 300

300 significa 5 minutos de tempo de execução para a solicitação http.

Jamil Ahmed
fonte
16

Seu script está expirando. Dê uma olhada na função set_time_limit () para aumentar o tempo de execução. Ou crie um perfil do script para torná-lo mais rápido :)

tlenss
fonte
11
@HarshaMV Ele quer dizer usar um perfil de desempenho para determinar por que o script é lento no início e otimizar seu código para melhorar o tempo de execução. Isso pode ou não ser útil, dependendo do gargalo (CPU x E / S de disco x Rede).
Dan Bechard
12

se todas as opções acima não funcionarem para você, adicione um .htaccessarquivo ao diretório em que seu script está localizado e coloque-o dentro

<IfModule mod_php5.c>
php_value post_max_size 200M
php_value upload_max_filesize 200M
php_value memory_limit 300M
php_value max_execution_time 259200
php_value max_input_time 259200
php_value session.gc_maxlifetime 1200
</IfModule>

foi assim que resolvi meu problema, ini_set('max_execution_time', 86400);nem set_time_limit(86400)resolvi, mas o método .htaccess resolveu.

Nassim
fonte
11
Isso funciona no meu caso. Obrigado. Substitua M por G por GB
Web_Developer 7/15
11

Podemos resolver esse problema de três maneiras diferentes.

1) Usando o arquivo php.ini

2) Usando o arquivo .htaccess

3) Usando o arquivo Wp-config.php (para Wordpress)

KarSho
fonte
8

Você pode remover a restrição configurando-a como zero adicionando esta linha na parte superior do seu script:

<?php ini_set('max_execution_time', 0); ?>
Mwangi Thiga
fonte
7

Siga o caminho /etc/php5(your php version)/apache2/php.ini.

Abra-o e defina o valor max_execution_timepara o valor desejado.

Suchit kumar
fonte
Em certos provedores de hospedagem pode ser necessário definir em /home/[username]/.php/7.0/phprc
expertCode
7

Talvez verifique alguma coisa que você tenha alterado no arquivo php.ini. Por exemplo, alterei "; intl.default_locale =" para "; intl.default_locale = en_utf8" para ativar a "Extensão de internacionalização (Intl)" sem adicionar a "extension = php_intl.dll" ; ocorreu o mesmo erro. Então, sugiro verificar se há erros semelhantes.

Mike G
fonte
5

Aumente o tempo de execução do script adicionando a seguinte linha na parte superior do script PHP.

ini_set('max_execution_time', 120); //120 seconds = 2 minutes

A referência foi retirada de Aumentar o tempo de execução do script PHP

JoyGuru
fonte
5

Para estender o seu, max_execution_timevocê pode usar ini_setou set_time_limit.

// Set maximum execution time to 10 seconds this way
ini_set('max_execution_time', 10);
// or this way
set_time_limit(10);

!! Mas lembre-se de que, ambas as funções são reiniciadas também contando o tempo que o script já levou para executar

sleep(2);
ini_set('max_execution_time', 5);

register_shutdown_function(function(){
    var_dump(microtime(true) - $_SERVER['REQUEST_TIME_FLOAT']);
});

for(;;);

//
// var_dump outputs float(7.1981489658356)
//

portanto, se você deseja definir a quantidade máxima exata de tempo que o script pode executar, seu comando deve ser o primeiro.

As diferenças entre essas duas funções são

  • set_time_limit não retorna informações se foi bem-sucedido, mas emitirá um aviso de erro.
  • ini_setretorna valor antigo em caso de sucesso ou falso em caso de falha sem aviso / erro
Buksy
fonte
5

Você pode fazer isso facilmente com o WHM. Só tenho que:

WHM -> Configuração de Serviço -> Configuração do PHP

editor-> max_execution_time=30

(30 é o padrão, altere-o para qualquer valor que você desejar)

payal
fonte
2

Eu tenho o mesmo problema no site WordPress, eu adicionei no arquivo .htaccess e funcionou bem para mim.

php_value max_execution_time 6000000
Ankit K Gupta
fonte
0

Fiz algumas alterações no meu caso em: xampp \ phpMyAdmin \ libraries \ config.default.php

Eu procurei por: $cfg['ExecTimeLimit'] e altere o valor no lado direito ...

Você pode alterar o valor da mão direita para qualquer valor mais alto, como '5000'. e funciona.

Imad Ullah
fonte