У меня возникла проблема с файлом 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
Проверьте 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 } ?>