php守护进程

/*
 * php 进程管理
 */
fclose(STDIN);
fclose(STDOUT);
fclose(STDERR);
$STDIN = fopen('/dev/null', 'r');
$STDOUT = fopen('application.log', 'ab');
$STDERR = fopen('error.log', 'ab');
echo '父进程:'.posix_getpid()."\r\n";
$pid = pcntl_fork();
//父进程和子进程都会执行下面代码
echo '创建了子进程:'.$pid . "\r\n";
if ($pid == -1) {
    //错误处理:创建子进程失败时返回-1.
    die('could not fork');
} else if ($pid > 0) {
    //父进程会得到子进程号,所以这里是父进程执行的逻辑
    //pcntl_wait($status); //等待子进程中断,防止子进程成为僵尸进程。
    echo '结束父进程'."\r\n";
    exit(0);
} 
//子进程得到的$pid为0, 所以这里是子进程执行的逻辑。
$sid = posix_setsid();  //Make the current process a session leader
if($sid < 0){
    //-1 创建失败
    exit(1);
}
while(true){
    sleep(1);
    echo '守护进程在运行,时间:'.date('Y-m-d H:i:s')."\r\n";
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容