php守护进程

作者: 简书说我的昵称违规 | 来源:发表于2016-12-19 08:49 被阅读48次
    /*
     * 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";
    }
    

    相关文章

      网友评论

        本文标题:php守护进程

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