Считывает ли время ожидания времени выполнения?

У меня есть два вопроса относительно функции sleep() в PHP:

  1. Время сна влияет на максимальное время выполнения моих PHP-скриптов? Иногда PHP показывает сообщение «максимальное время выполнения 30 секунд превышено». Появится ли это сообщение, если я использую sleep(31) ?

  2. Существуют ли какие-либо риски при использовании функции sleep() ? Это стоит много производительности процессора?

Solutions Collecting From Web of "Считывает ли время ожидания времени выполнения?"

Вы должны попробовать, просто используйте скрипт, который будет спать больше, чем ваше максимальное время выполнения.

 <?php sleep(ini_get('max_execution_time') + 10); ?> 

Спойлер: в Linux время сна игнорируется, но под Windows оно считается временем выполнения.

Это влияет только на время скрипта, а не на системные вызовы, такие как sleep (). По-видимому, есть ошибка, когда включена функция sleep () Windows. Максимальное время выполнения – это время в реальном времени, а не время процессора или что-то в этом роде. Однако вы можете изменить его:

  • max_execution_time в вашем php.ini. Это глобальная установка;
  • Используя ini_set () с указанной директивой. Это изменит его только для исполняемого скрипта в настоящий момент только для этого выполнения;
  • set_time_limit () : также локальное изменение.

Что касается разницы между двумя последними, я считаю max_execution_time фиксированной величиной. Бег:

 ini_set('max_execution_time', 60); 

будет ограничивать скрипт до 60 секунд. Если через 20 секунд вы вызываете:

 set_time_limit(60); 

теперь скрипт будет ограничен 20 + 60 = 80 секунд.

На странице PHP sleep () есть примечание, добавленное пользователем:

Примечание. Функция set_time_limit () и директива конфигурации max_execution_time влияют только на время выполнения самого скрипта. Любое время, затрачиваемое на активность, которое происходит вне выполнения сценария, например системные вызовы с использованием system (), функция sleep (), запросы к базе данных и т. Д. Не включается при определении максимального времени выполнения сценария.

Другие уже рассмотрели основы времени сна () и времени выполнения сценария PHP, но вы также должны знать о другом риске при использовании очень длинных периодов сна.

Обычно, когда браузер отправляет запрос на сервер и не получает никаких данных с сервера, соединение может отключиться. Это ограничение зависит от настроек браузера, но я читал, что IE7 имеет значение по умолчанию всего 30 секунд, в то время как Firefox имеет значение по умолчанию 115 секунд – вы можете проверить свою собственную конфигурацию в Firefox, перейдя к : config и фильтрация для network.http.keep-alive.timeout (срок указывается в секундах).

Изменить: у меня были единицы для network.http.keep-alive.timeout и browser.urlbar.search.timeout. Это действительно в секундах, а не в десятых долях секунды.

a) Да, он рассчитывает на ограничение по времени (поэтому sleep (31) вызовет ошибку)

б) Он делает противоположное от стоимости производительности процессора – он позволяет другим приложениям использовать процессор (когда приложение засыпает, использование ЦП этого приложения будет около 0%). Помимо того, что у меня время от времени, я не могу думать о каких-либо рисках использования этого.