PCNTL-PHP对守护进程的好处是什么?

时间:2014-02-05 15:47:23

标签: php daemon pcntl start-stop-daemon

我正在研究并尝试使用php进行守护进程,我发现自己被迫重新编译PHP以启用PCNTL。然后我开始做一些测试。我分叉了一个孤儿的例子:

#!/usr/bin/env php
<?php
$pid = pcntl_fork();

if ($pid === -1) {
    echo("Could not fork! \n");die;
} elseif ($pid) {
    echo("shell root tree \n");
} else {
    echo "Child process \n";

    chdir("/");

        fclose(STDIN);
        fclose(STDOUT);
    fclose(STDERR);
    $STDIN = fopen('/dev/null.txt', 'r');
    $STDOUT = fopen('/dev/null.txt', 'wb');
    $STDERR = fopen('/dev/null.txt', 'wb');

    posix_setsid();
    while(1) {
        echo ".";
        sleep(1);
    }
}

然后我运行了脚本:

$cd /var/www
$./test.php

每件事情都进展顺利,文件/dev/null.txt已清除,并且每1秒钟在无限循环中更新。

然后我想知道PCNTL的好处,所以我改变了代码:

#!/usr/bin/env php
<?php

fclose(STDIN);
fclose(STDOUT);
fclose(STDERR);

$STDIN = fopen('/dev/null.txt', 'r');
$STDOUT = fopen('/dev/null.txt', 'wb');
$STDERR = fopen('/dev/null.txt', 'wb');

while(1) {
    echo ".";
    sleep(1);
}

之前的两个例子都给了我相同的结果。 我错过了什么吗?你能指导我吗

0 个答案:

没有答案