Что такое практическое использование для сна PHP ()?

Я просто посмотрел на документы curl.

Где бы вы использовали эту функцию?

Это нужно, чтобы дать процессору перерыв в дорогостоящей функции?

Какие-то общие подводные камни?

php,function,sleep,usleep,

46

Ответов: 13


44 принят

Одно место, где он находит применение, - это создать задержку .

Допустим, вы создали сканер, который использует file_get_contents/ sleepдля получения удаленных страниц. Теперь вы не хотите забрасывать на удаленном сервере слишком много запросов за короткое время. Таким образом, вы вводите задержку между последовательными запросами.

usleepпринимает аргумент в секундах, его друг sleepпринимает аргументы в микросекундах и более подходит в некоторых случаях.


27

Другой пример: вы запускаете какой-то пакетный процесс, который сильно использует ресурс. Возможно, вы заходите в базу данных из 9 000 000 названий книг и обновляете около 10% из них. Этот процесс должен запускаться в середине дня, но есть так много обновлений, которые нужно выполнить, чтобы запустить пакетную программу, перетащив сервер базы данных на сканирование для других пользователей.

Таким образом, вы изменяете пакетный процесс для отправки, скажем, 1000 обновлений, а затем в sleepтечение 5 секунд, чтобы дать серверу базы данных возможность завершить обработку любых запросов от других резервных копий пользователей.


22

Вот фрагмент того, как я использую в одном из моих проектов:foreach($addresses as $address) { $url = "http://maps.google.com/maps/geo?q={$address}&output=json...etc..."; $result = file_get_contents($url); $geo = json_decode($result, TRUE); // Do stuff with $geo sleep(1); }

sleep

В этом случае sleepя предотвращаю блокировку карт Google, потому что я посылаю слишком много запросов на сервер.

Изменить: это пример того, что говорит codaddict.


Старый вопрос, который я знаю, но другой причиной использования u / sleep может быть, когда вы пишете код безопасности / криптографии, например скрипт аутентификации. Несколько примеров:

  1. Возможно, вы захотите уменьшить эффективность потенциальной атаки грубой силы, сделав ваш сценарий входа в систему целенаправленно медленным, особенно после нескольких неудачных попыток.
  2. Также вы можете захотеть добавить искусственную задержку во время шифрования, чтобы смягчить атаки времени . Я знаю, что шансы тонкие, что вы собираетесь писать такой глубокий код шифрования на языке, таком как PHP, но все же допустим, что я считаю.

РЕДАКТИРОВАТЬ

Использование u / sleep против временных атак не является хорошим решением. Вы все равно можете получить важные данные в момент атаки, вам просто нужно больше образцов, чтобы отфильтровать шум, который добавляет u / sleep.

Вы можете найти дополнительную информацию по этой теме в: Может ли случайный сон предотвращать атаки времени?


1

Вы можете использовать sleep для приостановки выполнения сценария ... например, для задержки вызова AJAX со стороны сервера или реализации наблюдателя. Вы также можете использовать его для моделирования задержек.

Я использую это также для задержки sendmail () & co. ,

Кто-то использует функцию sleep () для предотвращения DoS и login brutefoces, я не согласен, потому что в этом вам нужно добавить некоторые проверки, чтобы пользователь не запускался несколько раз.

Проверьте также спящий режим .

PHP функция, сон, USleep,
Похожие вопросы