php 创建守护进程

function createDeamon($gid, $uid) {
        // 只允许在cli下面运行  
        if (php_sapi_name() != "cli") {
            die("only run in command line mode\n");
        }

        set_time_limit(0);

        if (pcntl_fork() != 0) { //是父进程,父进程退出  
            exit();
        } 

        \posix_setsid(); //设置新会话组长,脱离终端
        chdir("/"); //改变工作目录
        umask(0); //把文件掩码清0  

        if (pcntl_fork() != 0) { //第二次fock子进程  
            exit();
        }

        \posix_setuid($uid);
        \posix_setgid($gid);

        //关闭打开的文件描述符  
        fclose(STDIN);
        fclose(STDOUT);
        fclose(STDERR);
        
        //重定向标准输出和错误输出,个人觉得不需要这样,因为常住内存,所以一直占着io链接总感觉不太好,不如自定义msg方法
        /*
        global $STDIN, $STDOUT, $STDERR;
        $outputfile = self::getConfig('deamon', 'outputfile');
        $dirname = dirname($outputfile);
        if( !file_exists($dirname) ){
            mkdir($dirname);
        }
        
        $STDIN = fopen('/dev/null', "a");
        $STDOUT = fopen($outputfile, "a");
        $STDERR = fopen($outputfile, "a");
        */
    }
此条目发表在php, php函数集分类目录。将固定链接加入收藏夹。