我不明白为什么当我从浏览器运行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
完成任务。怎么办?
答案 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在后台运行。