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 

Solutions Collecting From Web of "php timeout – set_time_limit (0); – не работают"

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

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

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

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

 Apache <-> mod_fastcgi <-> php processes 

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

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

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

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

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

 ini_set('max_execution_time', 300); 

использовать это

Проверьте это, это от 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 } ?>