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


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.


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.


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);

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

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.


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 :)


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.


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)


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); ?>

7

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

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


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.



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

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)


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

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.