PHP sleep () вызывает высокую загрузку процессора

Я запускаю сценарий CLI, который в основном спит. Каждые 10 секунд скрипт что-то выполняет. Проблема в том, что скрипт сидит при использовании 94% процессора во время сна.

Способ, которым я его устанавливал:

while(1){ sleep(10); doStuff(); } 

Хотя это работает по назначению, есть очевидная проблема. В C ++ / Java я мог бы просто установить таймер, который устранит проблему с циклом. Кроме того, я надеялся, что мне не нужны работы cron.

Есть ли альтернативный способ сделать это?


Обновить

По-видимому, мой оригинальный скрипт (который был довольно большой) никогда не входил в спящий режим, поэтому цикл while выполнял единичные и сжигаемые циклы CPU. Для тех, кто имеет такую ​​же проблему, убедитесь, что это не так!

Раньше, когда мне нужно было сделать скрипт PHP демоном, я использовал модуль PEAR, описанный здесь: http://kevin.vanzonneveld.net/techblog/article/create_daemons_in_php/

Если вы не хотите использовать модуль PEAR, вы можете изучить его исходный код и сделать что-то подобное.

Мой скрипт был настроен примерно так:

 define('THREAD_SLEEP', 10); // Sleep time $sleep = false; // Skips the first sleep while(1){ if($sleep){ sleep(THREAD_SLEEP); } $sleep = true; // By default, the script enters sleep mode each loop. if(doSomethingAndHaveMoreToDo()){ $sleep = false; // If more stuff to do, remove sleep and keep doing it. } } в define('THREAD_SLEEP', 10); // Sleep time $sleep = false; // Skips the first sleep while(1){ if($sleep){ sleep(THREAD_SLEEP); } $sleep = true; // By default, the script enters sleep mode each loop. if(doSomethingAndHaveMoreToDo()){ $sleep = false; // If more stuff to do, remove sleep and keep doing it. } } 

Проблема заключалась в том, что сценарий сохранял значение $sleep false , что означало, что он никогда не входил в спящий режим и не использовал почти 100% процессор.