gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 12:47:40 25 4
gpt4 key购买 nike

我有两个文件,file_a.phpfile_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(curl解决方案)

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 中的类似行为,我已经看到一些专用库?

最佳答案

创建一个包含以下内容的文件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>";

shell 将读取 BASH 脚本,在后台运行 PHP 文件并立即返回到您的原始脚本。

更强大的解决方案是使用一些队列系统,例如PHP-Resque

关于php - 如何从另一个php文件在后台执行一个php文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54444158/

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