如何从另一个php文件在后台执行php文件

如何从另一个php文件在后台执行php文件,php,multithreading,php-5.6,Php,Multithreading,Php 5.6,我有两个文件,file_a.php和file_b.php。在filefile_a.php中,我试图将file_b.php作为“后台进程”执行。我尝试了在stackoverflow上找到的两种方法,但无法实现: 文件a.php(exec解决方案) echo“Start”.time().“”; exec(“php-f/Path/to/file/file_b.php/dev/null&”); 回显“End.time()””; 文件a.php(curl解决方案) echo“Start”.time().

我有两个文件,
file_a.php
file_b.php
。在file
file_a.php
中,我试图将
file_b.php
作为“后台进程”执行。我尝试了在stackoverflow上找到的两种方法,但无法实现:

文件a.php(exec解决方案)

echo“Start”.time().“
”; exec(“php-f/Path/to/file/file_b.php/dev/null&”); 回显“End.time()”
”;
文件a.php(curl解决方案)

echo“Start”.time().“
”; $ch=curl_init(); curl_setopt($ch,CURLOPT_URL,'http://192.168.1.1:8888/file/file_b.php'); curl_setopt($ch,CURLOPT_FRESH_CONNECT,true); curl_setopt($ch,CURLOPT_TIMEOUT_MS,1); curl_exec($ch); 卷曲关闭($ch); 回显“End.time()”
”;
file_b.php(延迟5秒,发送邮件示例)

设置时间限制(5)//设置5秒延迟
对于($i=0;$i<4;++$i){
睡眠(1);
}
//信息
$msg=“文本行”;
//发送电子邮件
邮件(“testmail@test.io“,”我的主题“,$msg)
我正在尝试调用
file_a.php
并执行
file_b.php
,而无需在
file_a.php
中等待5秒钟,就像后台进程一样。
在PHP7之前的PHP中,有一种方法可以管理类似的行为,我已经看到了一些专用的库?

创建一个包含以下内容的文件background.sh

#!/bin/bash

/usr/bin/php -f /Path/to/file/file_b.php &
然后使用第一个方法调用它

echo "Start ".time()."<br>";
exec("/bin/bash background.sh");
echo "End ".time()."<br>";
echo“Start”.time().“
”; exec(“/bin/bash background.sh”); 回显“End.time()”
”;
shell将读取BASH脚本,在后台运行PHP文件,并立即返回到原始脚本


更可靠的解决方案是使用一些队列系统,例如

为什么需要运行此后台进程?它能等一个小时吗?还是必须现在就完成?似乎您需要一个cron job我想让使用文件_a.php的用户不用等到文件_b.php执行结束(在现实生活中,文件_b.php会产生很长的执行时间,大约4或5秒,我需要对文件_a.php的快速响应)
set_time_limit(5);//setting five seconds delay
for ($i = 0; $i < 4; ++$i) {

    sleep(1);
}

// the message
$msg = "line of text";
// send email
mail("testmail@test.io","My subject",$msg)
#!/bin/bash

/usr/bin/php -f /Path/to/file/file_b.php &
echo "Start ".time()."<br>";
exec("/bin/bash background.sh");
echo "End ".time()."<br>";