Когда применяется sleep?

93
02 марта 2021, 03:30

Я знаю, что это задержка в несколько миллисекунд. Скажите, пожалуйста, когда применяется sleep в реальных проектах?

Answer 1

Еще есть функция usleep($micro_seconds) - аналогичная по действию ф-и sleep($seconds), но принимающая в качестве аргумента значение в микросекундах.

Из моей практики, приостановка выпонения скрипта на заданный период бывает полезна:

  • чтобы снизить нагрузку на интенсивно потребляемый скриптом ресурс(ы): CPU / DB / ...

  • чтобы снизить частоту запросов к внешнему ресурсу, который накладывает ограничения на их количество. Например - запрет доступа клиента к нему, при превышении им 100 запросов в течении 30сек.

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

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

Например - требуется написать скрипт, который в бесконечном цикле каждые 10 секунд выводит одно сообщение Прошло 10 сек!:

Реализация:

<?php
while (true) {
    if (time() % 10 === 0) {
        echo "Прошло 10 сек!\n";
    }
    sleep(1);
}

Если закомментировать строку с sleep(1);, то скрипт будет работать неверно - выводить несколько сообщения вместо одного, а также начнет потреблять очень много (почти 100%) ресурсов CPU.

UPD: на комментарий Ep1demic

READ ALSO
Использование нескольких case в switch в PHP

Использование нескольких case в switch в PHP

Хочу использовать несколько case в switch, указывая значения в переменной через запятую или массивом

91
PHP json из MySQL

PHP json из MySQL

Подскажите пожалуйста как сделать такую структуру json из PHPСтруктура таблицы MySQL:

103
PHP значение из input с onclock

PHP значение из input с onclock

Есть два поля от календаря начальная и текущая дата инпутовские, где дата выбираетсяНикак не могу понять как вытащить значение после выбора

83
CucumberException: Failed to instantiate class stepDefinitions при запуске тестов

CucumberException: Failed to instantiate class stepDefinitions при запуске тестов

Прошу помочь разобратьсяОшибка где-то в инициализации страницы, если я верно понимаю

227