В общих словах демон — это служба, запускаемая один раз и работающая в фоновом режиме без прямого общения с пользователем. Для чего может пригодиться? Нам необходимо непрерывно отслеживать папку на наличие изменений в ней и выполнять определенные команды. Наш демон должен запускаться из консоли, ничего в нее не выводить, ошибки логировать.
Итак, начнем. Для начала закроем потоки STDIN, STDOUT:
fclose(STDIN); fclose(STDOUT); fclose(STDOERR);
Вы можете не закрывать, а перенаправлять в другой файл. Далее нам нужно создать дочерний процесс и закрыть родительский. Тем самым мы отвязываемся от консоли.
$child = pcntl_fork(); if ($child) { exit(); } posix_setsid();
И делаем самое страшное: создаем бесконечный цикл!
while (true) { // … sleep(1); }
Теперь мы можем запустить из консоли “php daemon.php”. Скрипт будет работать в фоне непрерывно, но не надейтесь на непрерывность, что-то может пойти не так, и вы потеряете ваш скрипт.