在 PHP 代码中,我有以下内容:
运行.php
<?php
shell_exec("php theprocess.php > /dev/null 2>&1 &");
?>
我从浏览器执行 run.php (例如:http://localhost/run.php)
然后我输入:ps ux
username [~/www/site/test]# ps ux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
username 847 0.0 0.1 23808 7724 ? R 16:55 0:00 php theprocess.php
username 849 0.0 1.2 89504 53244 ? R 16:55 0:00 php theprocess.php
username 851 0.0 0.7 89504 31592 ? R 16:55 0:00 php theprocess.php
username 853 0.0 0.1 23628 4636 ? R 16:55 0:00 php theprocess.php
username 854 0.0 0.0 2276 824 ? R+ 16:55 0:00 ps ux
username 3880 0.0 0.0 10080 1704 ? S 16:33 0:00 sshd: username@pts/2
username 3883 0.0 0.0 2676 1368 ? S 16:33 0:00 -jailshell
我不明白为什么它显示超过 1 个 theprocess.php 进程?我只执行了 1 次。我没有执行超过 1 个。
编辑:
另外为什么它仍然在后台运行?它应该终止theprocess.php
完成任务。
答案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 &");
我不再在后台运行多个进程。