【发布时间】:2013-11-02 00:26:47
【问题描述】:
我正在运行一个涉及 php+apache2 守护进程的 Web 服务。所以我尝试了 pcntl_fork 函数。但是有一个问题是即使我在子进程的代码中使用了 exit(0) 子进程也没有终止,这导致了很多 apache2 进程。
我想知道是否有办法关闭那些无用的 apache2 进程?
PS:因为我不太了解信号的机制,所以我尝试通过一次调用代理脚本来创建守护进程,该脚本将在子进程创建后立即退出。
switch ($_GET['action']){
case "new":
$pid = pcntl_fork();
switch ($pid){
case -1:
echo "failed to create daemon";
exit;
case 0:
//Code here
exit(0);
break;
default:
echo "Daemon PID:$pid";
}
}
我打算使用一个文件来控制守护进程。例如,我将在守护进程的控制文件(如“1.txt”)中附加一行“exit”,让它自行关闭。
PPS:看完这个话题:pcntl_fork() results in defunct parent process,我很好奇是不是僵尸进程bug导致了这个bug。
【问题讨论】:
标签: php linux apache fork daemon