PHP创建守护进程

PHP 创建守护进程

 0) {
    //父进程退出,子进程被1号进程收养
    exit(0);
}

//让该进程脱离之前的会话、终端、进程组的控制
posix_setsid();

//修改进程的工作目录,由于子进程会继承父进程的工作目录,修改工作目录释放对父进程工作目录的占用
chdir('/');

/* 
 * 通过上一步,我们创建了一个新的会话组长,进程组长,且脱离了终端,但是会话组长可以申请重新打开一个终端,为了避免 
 * 这种情况,我们再次创建一个子进程,并退出当前进程,这样运行的进程就不再是会话组长。 
 */ 

$pid = pcntl_fork();
if ($pid == -1) {
    throw new Exception("进程创建失败", 1);
} elseif ($pid > 0) {
    //再一次退出父进程,子进程成为最终的守护进程
    exit(0);
}

//关闭守护进程不是用的标准输入、输出、错误数据的描述符
// fclose(STDIN);
// fclose(STDOUT);
// fclose(STDERR);


//处理业务代码

while (true) {
    $txt = time() . PHP_EOL;
    file_put_contents('/Users/tongkun/Desktop/fork.log', $txt, FILE_APPEND);  
    sleep(1);
}

执行守护进程

php path/file.php

你可能感兴趣的:(PHP创建守护进程)