Почему мой скрипт работает дольше, чем установлено на моем сервере max_execution_time?

У меня есть сценарий:

for ($i = 0; $i <= 7200; $i++) {
    echo $i.' - ';
    sleep(1);
}

Но на моем сервере есть:

ini_get('max_execution_time'); // == 30

Почему скрипт работает 7200 секунд (не время выполнения), а max_execution_time равно 30? set_time_limit() на сервере выключен


person user2219071    schedule 12.11.2013    source источник
comment
Функция set_time_limit() и директива конфигурации max_execution_time влияют только на время выполнения самого скрипта. Любое время, затраченное на действия, происходящие вне выполнения сценария, такие как системные вызовы с использованием system(), функции sleep(), запросы к базе данных и т. д., не учитывается при определении максимального времени выполнения сценария.   -  person naththedeveloper    schedule 12.11.2013


Ответы (4)


Время, которое вы проводите в sleep, не засчитывается во время выполнения.

person Fleshgrinder    schedule 12.11.2013

sleep время не учитывается, так как это системный вызов.

См. Как работает PHP max_execution_time?

person Rémi Benoit    schedule 12.11.2013
comment
+1 за объяснение того, почему это не учитывается, и за предоставление ссылки ... Я не могу догадаться, почему у вас меньше голосов, чем у других здесь, когда вы дали первый ответ. - person Bhavik Shah; 12.11.2013

сон не зависит от max_execution_time

http://www.php.net/manual/en/info.configuration.php#ini.max-execution-time

person Realitätsverlust    schedule 12.11.2013

max_execution_time влияет только на время скрипта, а не на системные вызовы, такие как sleep().

sleep ($seconds);

sleep — Отложить выполнение

person Krish R    schedule 12.11.2013