【发布时间】:2016-03-17 17:39:04
【问题描述】:
我在网上找到了很多关于后台运行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'命令清楚地找到它
【问题讨论】: