为什么shell_exec执行多个进程?

时间:2011-07-07 16:37:45

标签: linux shell php shell-exec

我不明白为什么当我从浏览器运行run.php一次时有多个进程

在PHP代码中,我有以下内容:

run.php

<?php
shell_exec("php theprocess.php > /dev/null 2>&1 &");
?>

theprocess.php

<?php
$z = 1;
while ($z <= 20) {
    echo $z . "\n";
    $z++;
    sleep(3);
}
?>

我从浏览器执行run.php(例如:http://localhost/run.php

然后我输入:ps aux | grep php

username@ [~]# ps aux | grep php
username 27272  0.0  1.5  89504 64468 ?        R    17:33   0:00 php theprocess.php
username 27274  0.0  1.2  89504 49872 ?        R    17:33   0:00 php theprocess.php
username 27276  0.0  0.6  89504 28676 ?        R    17:33   0:00 php theprocess.php
username 27278  0.0  0.0  22280  3704 ?        R    17:33   0:00 php theprocess.php
username 27280  0.0  0.0   1940   508 ?        S+   17:33   0:00 grep php

我不明白为什么它会显示超过1个process.php进程?

还为什么它还在后台运行?它应该终止theprocess.php完成任务。怎么办?

1 个答案:

答案 0 :(得分:1)

我已经解决了这个问题!

从网页运行脚本时,它不会被视为PHP cli。

替换

shell_exec("/usr/bin/php theprocess.php > /dev/null 2>&1 &");

shell_exec("/usr/bin/php-cli theprocess.php > /dev/null 2>&1 &");

我不再有多个procress在后台运行。