Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 来自pcntl_fork的进程未终止_Php_Linux_Apache_Fork_Daemon - Fatal编程技术网

Php 来自pcntl_fork的进程未终止

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

我正在运行一个web服务,它通过php+apache2与守护进程相关。所以我尝试了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:在阅读本主题之后,我很好奇,如果僵尸进程错误导致了错误。

您应该使用此功能:


但通常在Apache下,分叉可能不是一个好主意。

您应该使用此函数:


但通常在Apache下,分叉可能不是一个好主意。

那么,如果从cli运行“孵化器”进程并通过文本文件控制它更好呢?孵化器进程是一个好主意,但关于通信数据库或某种消息队列,它比文本文件更可靠。因此,如果运行“孵化器”更好从cli处理并通过文本文件控制它?孵化器过程是一个好主意,但关于通信数据库或某种消息队列的信息比文本文件更可靠。