【发布时间】:2011-07-07 16:37:45
【问题描述】:
当我从浏览器运行一次run.php 时,我不明白为什么会有多个进程
在 PHP 代码中,我有以下内容:
run.php
<?php
shell_exec("php theprocess.php > /dev/null 2>&1 &");
?>
进程.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 个 theprocess.php 进程?
还有为什么它还在后台运行?它应该终止theprocess.php 完成任务。怎么可能?
【问题讨论】:
-
您已将
theprocess.php与最后的&放在后台。如果它坐在那里等待输入,它将永远等待。 -
啊,好吧,现在我不明白了,也许在脚本的末尾我可以包含“kill -9 PID”......但我不明白为什么当我执行一次时显示超过 1 个进程。
-
您在测试时刷新了多少次页面?每次都会启动一个新的进程...
-
Marc B,我在测试时没有刷新页面。
-
奇怪,当我在 shell 中输入 'php run.php' - 它显示一个进程在后台运行...但是从浏览器运行正在执行多个 php run.php hmmmm
标签: linux shell php shell-exec