Ответ 1
Проверьте php.ini
ini_set('max_execution_time', 300); //300 seconds = 5 minutes
ini_set('max_execution_time', 0); //0=NOLIMIT
У меня возникла проблема с файлом 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", которая управляет временем простоя script. Поэтому, если script ничего не выводит на обработчик fastcgi за это несколько секунд, то fastcgi завершает его. Настройка выглядит примерно так:
Apache <-> mod_fastcgi <-> php processes
В статье приведены другие примеры и дополнительные пояснения. Надеюсь, это поможет кому-то другому.
Обычно я использую set_time_limit (30) в основном цикле (поэтому каждая итерация цикла ограничена 30 секундами, а не целым script).
Я делаю это в нескольких сценариях обновления базы данных, которые обычно занимают несколько минут, но меньше секунды для каждой итерации. Сохранение 30-секундного ограничения означает, что script не застрянет в бесконечном цикле, если я достаточно глупым, чтобы создать его.
Я должен признать, что мой выбор в 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
}
?>