SIGCHILD не ловит сигнал, когда умирает дочерний процесс

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

class Daemon {
public function __construct() {

$set = pcntl_signal(SIGCHLD, array($this, 'childSignalHandler'));
$pid = pcntl_fork();
if ($pid == -1) {
echo 'could not fork';
} elseif ($pid) {
// parent
sleep(20);
// this would keep running and spawn other children from time to time
} else {
// child
sleep(5);
// should call childSignalHandler() in parent
}
}

public function childSignalHandler($pid) {
echo 'child is dead';
}
}

new Daemon();

1

Решение

по-видимому, это работает, если я добавлю объявить (тики = 1); Что сбивает с толку, так это то, что это не рекомендуется в 5.3, но я не могу найти никакой информации о том, что должно заменить его.

1

Другие решения

Других решений пока нет …