Что приводит к ошибке "Превышено максимальное время выполнения"?

Почему скрипт останавливается через определенное время, несмотря на установленное значение max_execution_time = 86400 секунд в php.ini и в самом скрипте?
  • 22 марта 2024 г. 6:49
Ответы на вопрос 3
Ошибка "Превышено максимальное время выполнения" возникает, когда PHP скрипт выполняется дольше, чем заданное значение параметра max_execution_time. 

Возможные причины того, что скрипт останавливается через определенное время, несмотря на установленное значение max_execution_time = 86400 секунд в php.ini и в самом скрипте:

1. Перезапуск PHP: Если веб-сервер перезапускает PHP во время выполнения скрипта, значение max_execution_time из php.ini может быть сброшено до значения по умолчанию.

2. Проблемы с ресурсами: Если скрипт использует много ресурсов (например, память или CPU), это может привести к ограничениям на выполнение скрипта даже при увеличенном значении max_execution_time.

3. Наличие других ограничений: Некоторые хостинг-провайдеры могут устанавливать собственные ограничения на время выполнения скриптов, которые могут переопределить значение max_execution_time из php.ini.

Для того чтобы устранить данную ошибку, рекомендуется проверить вышеперечисленные причины и убедиться, что никакие другие ограничения не блокируют выполнение скрипта. Также можно попробовать использовать функцию set_time_limit() в самом скрипте для установки времени выполнения скрипта динамически.
Потому что долгоиграющие задачи надо выполнять не через браузер, а в консоли . 
Либо ручками, либо по крону (ну или через очереди, но этот вариант явно не соответствует уровню вопроса).
Нужно катать сферические шары в вакуме.  Их 1000 штук.  Работник каждые 30 секунд уходит покурить. 
Один шар он перекатывает за время от 1 до 3х секунд (то есть нет равномерности).

Запрещаем ему курить пока не перекатит все. А он сволочь такая лажает постоянно.
Решение
Вместо цикла
для всех шаров с 1 по 1000 делай катать
пишем
Напиши на доске номер шара - 1
Цикл
прочитай номер шара
засеки время
откати шар
он 1000 - й , то ты свободен
посмотри время
если прошло больше 25 секунд, то запиши номер следующего шара и иди курить
Похожие вопросы