我在使用cronjob的共享服务器上运行一个非常慢的PHP脚本。 (该脚本会执行一些HTTP请求,这些请求会不时地暂停其在服务器上的执行...它会在~15-20秒内完成执行。)
问题是cronjob不时终止,共享服务器的帮助台告诉我它不应该连续运行超过5秒。
所以我认为(在进行严肃的优化任务之前)执行脚本并在脚本继续运行时立即返回。直到现在我想到了两种方式:
我已经在网上看过这两个选项,特别是在这个网站上,并没有找到真正有用的东西:如果第一个脚本立即完成,multi_curl什么都不做......
提前致谢。
使用可能的解决方案进行编辑我刚刚提出:
header("Content-Length: 0");
header("Connection: close");
flush();
$mainUrl = 'mySecondScript.php';
$active= null;
$mch = curl_multi_init();
$ch1 = curl_init($mainUrl);
curl_setopt($ch1, CURLOPT_HEADER, 0);
curl_multi_add_handle($mch, $ch1);
$resultCurl = curl_multi_exec($mch, $active);
do {
$resultCurl = curl_multi_exec($mch, $active);
} while ($resultCurl == CURLM_CALL_MULTI_PERFORM);
它可能类似于您可能熟悉的代码或网络上的任何其他代码 - 但如果我使用它,就像其他人为我写的一样,它就不会起作用 - 只有这样!
答案 0 :(得分:1)
如果您的主机上运行的用户PHP具有执行权限,您可以使用shell_exec和&使它运行后台进程,在PHP文件中如下所示:shell_exec('/path/to/php /path/to/file >/dev/null 2>&1 &')