Как работает PHP max_execution_time?

У меня мало сомнений относительно максимального времени выполнения, заданного в php.ini.

Предполагая, что max_execution_time составляет 3 минуты, рассмотрите следующие случаи:

  • У меня есть процесс, который закончится через 2 минуты.

    Но он в цикле и должен работать 5 раз. Таким образом, это становится 10 минут.

    Будет ли script работать правильно, не показывая ошибку для таймаута? Почему?

  • Функция PHP просто печатает данные, и это займет всего 2 минуты.

    Но выполнение запроса занимает 5 минут.

    Будет ли script работать без ошибок? Почему?

  • Мой единственный процесс php занимает 5 минут.

    Но я вызываю script из командной строки.

    Будет ли он работать правильно? Почему?

  • Как разрешена память и время выполнения?

    Если время выполнения для script очень высокое

    Но он возвращает небольшое количество данных

    Будет ли это влиять на память или нет? Почему?

Я хочу узнать, что происходит внутри, поэтому я спрашиваю об этом. Я не хочу просто увеличивать ограничение по времени и ограничение памяти.

Ответы

Ответ 1

Правила на max_execution_time относительно просты.

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

  • Время выполнения - это общее время выполнения script, включая запросы к базе данных, независимо от того, выполняется ли оно в циклах или нет. Таким образом, в первом и втором случае script завершится с ошибкой таймаута, потому что определено поведение max_execution_time.

  • Внешние системные вызовы с использованием exec() и такие не подсчитывают время выполнения, за исключением Windows. (Источник) Это означает, что вы можете запустить внешнюю программу, которая занимает больше времени max_execution_time.

  • При вызове из командной строки max_execution_time по умолчанию используется 0. (Источник) Итак, в третьем случае ваш script должен работать без ошибок.

  • Время выполнения и использование памяти не имеют ничего общего друг с другом. A script может работать в течение нескольких часов, не достигая предела памяти. Если это так, то часто из-за цикла, где переменные не отключаются, а ранее зарезервированная память не освобождается должным образом.