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

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

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

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

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

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

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

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

    Будет ли сценарий работать без ошибок? Зачем?

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

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

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

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

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

    Но он возвращает небольшой объем данных

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

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

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

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

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

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

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

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