gpt4 book ai didi

PHP shell_exec 不在后台运行

转载 作者:太空狗 更新时间:2023-10-29 12:42:49 24 4
gpt4 key购买 nike

我在网上找到了很多关于在后台运行 php 代码的内容,但我无法在我的机器上重现该场景。这是我的代码:

//call.php
function run_background()
{
$PID = shell_exec("nohup php teste.php &");
return $PID;
}

function checking_process($pid)
{
exec("ps $pid", $state);
return (count($state) >= 2);
}

$ps = run_background();
copy("yel", "temp/yel2");

当您运行 call.php 文件时,页面一直在加载,直到 test.php 文件运行。这是用于测试的文件:

//test.php
for($i=1; $i<=5; $i++)
{
sleep(1);
}
copy("yel", "temp/yel");

在这两个文件中,我都使用复制功能来测试执行操作的时间。在这一点上,我希望作为这个背景中的文件 test.php 至少需要 5 秒,call.php 文件的流程应该独立发生,但 'yel2' 文件仅在 'yel' 文件之后创建。但是,该函数实际上并没有在后台运行,这是错误吗?

注意:我使用的是 Manjaro Linux 64 位、PHP 5.5 和 Apache 2.4

注2:run_background函数返回的$PID是有效的,我用命令'ps aux'可以清楚的找到它

最佳答案

不要只在末尾添加 & 尝试添加 >&/dev/null & 这就是我取得的成功。所以最终会得到这样的结果:

$PID = shell_exec("nohup php teste.php >& /dev/null &");

关于PHP shell_exec 不在后台运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36067916/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com