在FastCGI上运行PHP的后台进程

时间:2012-10-15 17:52:02

标签: php exec fastcgi mod-php

我知道可以创建一个后台PHP进程,可以根据需要从另一个PHP文件启动:

$command = "/usr/bin/php5 -f script.php";
exec( "$command > /dev/null 2>&1 &", $arrOutput);

但是,此解决方案仅在PHP以 mod_php 运行时才有效。

有没有办法在 FastCGI 上做同样的事情?

似乎在FastCGI上,FastCGI一次又一次地启动和关闭该过程,是否有人有修复它的经验?

1 个答案:

答案 0 :(得分:0)

你可以设置一个cron作业吗?如果没有,并且必须在PHP中调用它,我曾经以跨平台的方式模拟它,而无需使用curl访问exec()等(信不信由你)。

创建.php脚本并将其公开,并将其添加到顶部:

if (isset($_POST['key']) == false || $_POST['key'] != 'your secret key') {
    die(); //request not allowed
}

然后从另一个PHP文件创建一个安全(https)curl连接并将密钥POST到它,在curl上设置一个5秒的超时(你也可以从请求页面发送一个http关闭连接头)这样,如果请求需要很长时间才能完成调用脚本,在你的情况下需要30秒。

这将执行以下操作: 1. curl将安全地访问页面(无论如何在浏览器中访问它都会停止) 2.卷曲将等待5秒钟,然后关闭连接(但你的PHP脚本将继续进行)

无论操作系统内部,外壳等,它都兼容。您也可以根据需要调整超时等。

不是一个出色的解决方案,但希望它对您有效。