【发布时间】:2015-01-20 04:06:08
【问题描述】:
我正在尝试创建一个处理多个子线程的守护进程。但是子线程似乎没有将信号发送回父线程以调用该函数。我曾尝试将其从课堂中取出并使其成为标准功能,但这似乎也无济于事。
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();
【问题讨论】:
-
显然,如果我添加 declare(ticks = 1);令人困惑的是,从 5.3 开始,它已被弃用,但我找不到任何关于应该替换它的信息。
-
你应该这样回答。
标签: php signals fork daemon pcntl