Подтвердить что ты не робот

Php timeout - set_time_limit (0); - не работают

У меня возникла проблема с файлом PHP, для выполнения которого требуется более 30 секунд.

После поиска я добавил set_time_limit(0); в начале кода, но файл по-прежнему отключается с помощью 500 error через 30 секунд.

log: PHP Fatal error:  Maximum execution time of 30 seconds exceeded in /xxx/xx/xxx.php

safe-mode : off
4b9b3361

Ответ 1

Проверьте php.ini

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

ini_set('max_execution_time', 0); //0=NOLIMIT

Ответ 2

Это старый поток, но я подумал, что отправлю ссылку , так как это немного помогло мне в этом вопросе. По сути, это говорит о том, что конфигурация сервера может переопределять конфигурацию php. Из статьи:

Например, mod_fastcgi имеет опцию "-idle-timeout", которая управляет временем простоя script. Поэтому, если script ничего не выводит на обработчик fastcgi за это несколько секунд, то fastcgi завершает его. Настройка выглядит примерно так:

Apache <-> mod_fastcgi <-> php processes

В статье приведены другие примеры и дополнительные пояснения. Надеюсь, это поможет кому-то другому.

Ответ 3

Обычно я использую set_time_limit (30) в основном цикле (поэтому каждая итерация цикла ограничена 30 секундами, а не целым script).

Я делаю это в нескольких сценариях обновления базы данных, которые обычно занимают несколько минут, но меньше секунды для каждой итерации. Сохранение 30-секундного ограничения означает, что script не застрянет в бесконечном цикле, если я достаточно глупым, чтобы создать его.

Я должен признать, что мой выбор в 30 секунд для лимита несколько произволен - мои скрипты могли фактически уйти с 2 секундами вместо этого, но я чувствую себя более комфортно с 30 секундами, учитывая фактическое приложение - конечно, вы могли бы использовать любую ценность вы чувствуете себя подходящим.

Надеюсь, это поможет!

Ответ 4

ini_set('max_execution_time', 300);

используйте этот

Ответ 5

Проверьте это, это от PHP MANUAL, Это может вам помочь.

Если вы используете PHP_CLI SAPI и получаете ошибку "Максимальное время выполнения из N секунд превышено", где N - целочисленное значение, попробуйте вызвать set_time_limit (0) каждые M секунд или каждую итерацию. Например:

<?php

require_once('db.php');

$stmt = $db->query($sql);

while ($row = $stmt->fetchRow()) {
    set_time_limit(0);
    // your code here
}

?>