Php 来自pcntl_fork的进程未终止
我正在运行一个web服务,它通过php+apache2与守护进程相关。所以我尝试了pcntl_fork函数。但有一个问题是,即使我在子进程的代码中使用了exit(0),子进程也没有终止,这会导致很多apache2进程 我想知道是否有办法关闭那些无用的apache2进程 PS:因为我不太了解信号的机制,所以我尝试通过对代理脚本的一次调用来创建守护进程,该脚本将在创建子脚本后立即退出Php 来自pcntl_fork的进程未终止,php,linux,apache,fork,daemon,Php,Linux,Apache,Fork,Daemon,我正在运行一个web服务,它通过php+apache2与守护进程相关。所以我尝试了pcntl_fork函数。但有一个问题是,即使我在子进程的代码中使用了exit(0),子进程也没有终止,这会导致很多apache2进程 我想知道是否有办法关闭那些无用的apache2进程 PS:因为我不太了解信号的机制,所以我尝试通过对代理脚本的一次调用来创建守护进程,该脚本将在创建子脚本后立即退出 switch ($_GET['action']){ case "new": $pid = p
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:在阅读本主题之后,我很好奇,如果僵尸进程错误导致了错误。您应该使用此功能:
但通常在Apache下,分叉可能不是一个好主意。您应该使用此函数:
但通常在Apache下,分叉可能不是一个好主意。那么,如果从cli运行“孵化器”进程并通过文本文件控制它更好呢?孵化器进程是一个好主意,但关于通信数据库或某种消息队列,它比文本文件更可靠。因此,如果运行“孵化器”更好从cli处理并通过文本文件控制它?孵化器过程是一个好主意,但关于通信数据库或某种消息队列的信息比文本文件更可靠。