【发布时间】:2019-06-23 22:40:14
【问题描述】:
我有两个文件,file_a.php 和 file_b.php。在文件file_a.php 中,我试图将file_b.php 作为“后台进程”执行。我尝试了在 stackoverflow 上找到的两种方法,但我无法使其工作:
file_a.php(执行解决方案)
echo "Start ".time()."<br>";
exec("php -f /Path/to/file/file_b.php /dev/null &");
echo "End ".time()."<br>";
file_a.php(卷曲解决方案)
echo "Start ".time()."<br>";
$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);
curl_close($ch);
echo "End ".time()."<br>";
file_b.php(5 秒延迟和示例邮件发送)
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)
我正在尝试调用file_a.php 并执行file_b.php 而无需在file_a.php 中等待5 秒,就像后台进程一样。
在 PHP 7 之前,有一种方法可以管理 PHP 中的类似行为,我已经看到了一些专用库?
【问题讨论】:
-
为什么需要运行这个后台进程?可以等待一个小时还是必须现在完成?好像你需要一个 cron 工作
-
我想让使用 file_a.php 的用户免于等待直到 file_b.php 执行结束(在现实生活中的应用程序 file_b.php 会产生很长的执行时间,比如 4 或 5 秒,我需要对 file_a.php 的快速响应)
标签: php multithreading php-5.6