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

312

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

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

Теги:

15 ответов

588
Лучший ответ

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

ini_set('max_execution_time', 300); //300 seconds = 5 minutes
  • 90
    set_time_limit (300) может использоваться для временного продления лимита времени.
  • 0
    Это установлено только для этого одного сценария или это повлияет на все остальные сценарии, выполняемые после этого на том же сервере?
Показать ещё 5 комментариев
163

У меня была та же проблема и она была решена, изменив значение для параметра 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 не работает, но это точно помогает!
  • 0
    php.ini можно найти в /etc/php5/apache2/php.ini .... Я использую Ubuntu 13.04 ...
Показать ещё 3 комментария
46

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

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

set_time_limit(0);
  • 5
    Это вообще не рекомендуется
  • 0
    Отключенное ограничение по времени не защищает от бесконечных циклов, поэтому всегда устанавливайте (большее) ограничение.
18

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

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

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

Изменить php.ini

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

max_execution_time

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

max_execution_time = 300

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

15

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

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

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

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

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

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

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

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

Подробнее → steptoinstall

7

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

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

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

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

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

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

5

Вы можете легко с помощью whm. jusst got to whm ----- > конфигурация службы ---------- > редактор конфигурации php ------- max_execution_time ----- > 30 (по умолчанию он меняет его на любое значение u want)

4

Чтобы расширить 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);

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

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

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

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

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

Увеличьте время выполнения script, добавив следующую строку вверху PHP скрипт.

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

Ссылка взята из Увеличить время выполнения PHP script

2

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

php_value max_execution_time 6000000

Ещё вопросы

Сообщество Overcoder
Наверх
Меню