Неустранимая ошибка: превышено максимальное время выполнения 30 секунд


397

Я загружаю файл JSON из онлайн-источника, и когда он проходит через цикл, я получаю эту ошибку:

Неустранимая ошибка: максимальное время выполнения 30 секунд превышено в C: \ wamp \ www \ temp \ fetch.php в строке 24


11
возможный дубликат Превышено максимальное время выполнения 60 секунд, что уже является дубликатом трех других. Пожалуйста, используйте функцию поиска, прежде чем спрашивать.
Гордон

«Функция set_time_limit () и директива конфигурации max_execution_time влияют только на время выполнения самого сценария. Любое время, затрачиваемое на действия, происходящие вне выполнения сценария, такие как системные вызовы с использованием system (), потоковые операции, запросы к базе данных и т. Д. . не учитывается при определении максимального времени выполнения сценария. Это не так для Windows "Из документации PHP
Джейкоб Санчес

Ответы:


722

Ваш цикл может быть бесконечным. Если это не так, вы можете продлить максимальное время выполнения следующим образом:

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

а также

set_time_limit(300);

может быть использовано для временного продления срока.


95
set_time_limit (300) может использоваться для временного продления лимита времени.
Ом

Это установлено только для этого одного сценария или это повлияет на все остальные сценарии, выполняемые после этого на том же сервере?
Рао

1
@Rao да, это будет только для этого сценария. Чтобы сделать это для всех скриптов, вам нужно изменить его в файле php.ini. Вы также можете сделать set_time_limit (0); если вы хотите, чтобы скрипт работал вечно или долго
Haseeb

31
ini_set ('max_execution_time', 0); // без ограничений
Джунаид Атари

3
@sangam Я бы сказал, что лучше всего поддерживать этот предел как можно ниже, допуская определенное количество дополнительного буфера. Из соображений безопасности я бы не хотел выключать его полностью. Это должно быть разумным. На самом деле я установил его вдвое больше времени, которое мой самый долго работающий скрипт требует для завершения при среднем уровне нагрузки сервера. Тем не менее, это всегда может потерпеть неудачу. Поэтому передовой практикой также является решение проблем тайм-аутов для скриптов, занимающих много времени, отдельно.
Hafenkranich

185

У меня была та же проблема, и я решил ее, изменив значение параметра max_execution_timeв php.ini, например:

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)

Я надеюсь, что это может помочь вам.


1
По какой-то причине ini_set не работает, но это точно помогает!
Габрян

php.iniможно найти в /etc/php5/apache2/php.ini.... Я использую Ubuntu 13.04 ...
Enissay

У меня была такая же проблема при установке Moodle на Wamp, но я решил настроить файл php.ini
Мухаммед Ирфан

1
Необходимо перезапустить apache после изменения в php.ini
spideringweb

[php7] - sudo nano /etc/php/7.0/apache2/php.ini
Крис Ламбру,

46

Все ответы выше верны, но в некоторых случаях я использую простой способ избежать этого.

Просто поместите эту команду в начале вашего скрипта:

set_time_limit(0);

9
Это совсем не рекомендуется
я самый глупый человек

1
Отключенное ограничение по времени не защищает от бесконечных циклов, поэтому всегда устанавливайте (большее) ограничение.
Бимлас

@IamtheMostStupidPerson Почему бы и нет? Если вы используете его как localhost
Фернандо Торрес

23

Я столкнулся с этой проблемой при обновлении до WordPress 4.0 . По умолчанию WordPress ограничивает максимальное время выполнения 30 секундами.

Добавьте следующий код в ваш файл .htaccess в корневом каталоге вашей установки WordPress, чтобы переопределить стандартную настройку.

php_value max_execution_time 300  //where 300 = 300 seconds = 5 minutes

18

редактировать php.ini

Найдите эту строку:

max_execution_time

Измените его значение на 300:

max_execution_time = 300

300 означает 5 минут времени выполнения запроса http.


16

Ваш сценарий истекает. Взгляните на функцию set_time_limit (), чтобы увеличить время выполнения. Или профилируйте скрипт, чтобы он работал быстрее :)


1
@HarshaMV Он имеет в виду использование профиля производительности, чтобы определить, почему сценарий начинается медленно, и оптимизировать код для увеличения времени выполнения. Это может или не может быть полезно, в зависимости от того, что является узким местом (ЦП против дискового ввода-вывода против сети).
Дэн Бешард

12

если все вышеперечисленное не сработало, добавьте .htaccessфайл в каталог, где находится ваш скрипт, и поместите его внутрь

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

таким образом я решил свою проблему, и ini_set('max_execution_time', 86400);не set_time_limit(86400)решил ее, но метод .htaccess сделал.


1
Это работает в моем случае. Спасибо. Замените M на G для GB
Web_Developer

11

Мы можем решить эту проблему тремя различными способами.

1) Использование файла php.ini

2) Использование файла .htaccess

3) Использование файла Wp-config.php (для Wordpress)


8

Вы можете снять ограничение, установив его на ноль, добавив эту строку вверху вашего скрипта:

<?php ini_set('max_execution_time', 0); ?>

7

Следуй по пути /etc/php5(your php version)/apache2/php.ini.

Откройте его и установите max_execution_timeжелаемое значение.


На некоторых хостинг-провайдерах вам может потребоваться установить /home/[username]/.php/7.0/phprc
expertCode

7

Возможно, проверьте, что вы изменили в файле php.ini. Например, я изменил «; intl.default_locale =» на «; intl.default_locale = en_utf8» , чтобы включить «Расширение интернационализации (Intl)», не добавляя «extension = php_intl.dll», после чего возникла та же ошибка. Поэтому я предлагаю проверить на подобные ошибки.



5

Для продления max_execution_timeвы можете использовать либо ini_setили 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);

!! Но имейте в виду, что обе функции перезапускаются, а также подсчет времени, которое скрипт уже выполнил

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

поэтому, если вы хотите установить точное максимальное время выполнения скрипта, ваша команда должна быть самой первой.

Различия между этими двумя функциями

  • set_time_limit не возвращает информацию об успешности, но выдает предупреждение об ошибке.
  • ini_setвозвращает старое значение в случае успеха или false при ошибке без предупреждения / ошибки

5

Вы можете сделать это легко с WHM. Просто надо:

WHM -> Конфигурация сервиса -> Конфигурация PHP

editor-> max_execution_time=30

(30 по умолчанию, измените его на любое значение, которое вы хотите)


2

У меня такая же проблема на сайте WordPress, я добавил в файл .htaccess, тогда у меня все работает нормально.

php_value max_execution_time 6000000

0

Я сделал некоторые изменения в моем случае в: xampp \ phpMyAdmin \ library \ config.default.php

я искал: $cfg['ExecTimeLimit'] и изменить значение на правой стороне ...

Вы можете изменить значение Right hand на любое более высокое значение, например «5000». и это работает.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.