Дальнейшие уточнения:
Модуль "pcntl" (который позволяет ветвить процессы), оказывается, есть в консольной версии PHP, но в модуле Apache его функции недоступны. Так что из консольной версии PHP мне как-то более или менее криво удалось запусть демон:
Код:
<?php
function shutdown($child_pid) {
posix_kill($child_pid, SIGKILL);
}
$child_pid = pcntl_fork(); // Разветвляем процесс
if ($child_pid) { // Это ветка родительского процесса
register_shutdown_function('shutdown', $child_pid);
// Функция shutdown будет вызвана при завершении процесса
// чтобы убить дочерний процесс после того, как он запустит демон
sleep(1);
// Даём дочернему процессу секунду на запуск демона
exit;
}
// А эта ветка выполняется только в дочернем процессе.
`setsid command &`;
// Команда setsid отвязывает демон command от родителя:
// дочернего процесса php, который его запустил
?>
Во-первых, как-то это кривовато: Нет гарантий, что за секунду дочерний процесс успеет запустить демон.
А во-вторых, проблема с запуском из-под Apache так и не решена...