Сделал такую штуку. Скрипт на PHP, который работает вечным циклом и выполняет определенный алгоритм. Его я запускаю из командной строки с параметром ($ php prog.php start). Чтобы остановить скрипт, сделал специальный файл с флагом: при каждом цикле код обращается к файлу и смотрит, если 0 - то продолжаем цикл, если 1 - то остановка и, соответственно завершение скрипта. Останавливаю скрипт так же: $ php prog.php stop - читается параметр и изменяется флаг в файле на 1. Хочу узнать, возможно ли запустить скрипт как демон? Чтобы набрал команду запуска скрипта и он в фоновом режиме работал, и терминал можно было выключить. Если надо остановить, вызвал терминал и написал команду остановки.
Расширения: http://php.net/pcntl http://php.net/posix Накатал примерчик: PHP: <?php $cmd = end($argv); // останов демона if ($cmd == 'stop') { $pid = file_get_contents('mydaemon.pid') or die("pid file not found!\n"); posix_kill($pid, SIGTERM); exit; } if ($cmd !== 'start') die('use (start | stop)!'); // Запуск демона // Форкаешь процесс. $pid = pcntl_fork(); if ($pid === -1) die('Could not fork'); // parent if ($pid) { // сохраняешь pid демона file_put_contents('mydaemon.pid', $pid); exit(0); } // child // отключаешься от терминала if (posix_setsid() === -1) die('Could not detach from terminal'); // регистрируешь callback сигнала остановки демона declare(ticks = 1); pcntl_signal(SIGTERM, 'dieMyDaemon'); function dieMyDaemon() { echo "сервер трагично погиб\n"; unlink('mydaemon.pid'); exit; } // работа демона while(true) { sleep(1); }