美文网首页
PHP创建守护进程

PHP创建守护进程

作者: 人在码途 | 来源:发表于2017-10-16 23:43 被阅读37次

    PHP 创建守护进程

    <?php
    
    
    /**
    * php 创建守护进程
    */
    
    
    $pid = pcntl_fork();
    if ($pid == -1) {
        throw new Exception("进程创建失败", 1);
    } elseif ($pid > 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创建守护进程

          本文链接:https://www.haomeiwen.com/subject/nphruxtx.html