我有一个非常简单的PHP脚本:
ini_set('max_execution_time', 240000);
//Switch for terminating the test processing status loop
$completed = false;
while ($completed == false) {
sleep(2);
}
这是使用AJAX启动的,这又非常简单:
$.ajax({
url: "lib/check_processing_status.php",
timeout: 0,
async: true,
error: function() {
console.log("FAILURE");
},
success: function() {
console.log("SUCCESS");
}
});
此脚本应无限期运行,或至少在触发超时之前运行。然而,它在每次运行的持续时间之后都会失败。有时只需40秒,有时1分10秒。
为什么会失败!?
其他
只是添加一些上下文,我有这样一个循环的原因是因为我将查询服务器进程的进度,所以不是每5秒调用一次AJAX请求(填满控制台)有10个请求的窗口),我认为在整个过程完成之前保持在PHP脚本内部比较整洁,然后在完成时返回。
答案 0 :(得分:0)
问题是浏览器正在杀死PHP脚本连接,即使脚本配置为超时超过一小时并且按预期运行。我认为浏览器认为它无法正常运行。
这意味着使用长时间运行的PHP脚本轮询服务器是不可能的,您必须在JavaScript端进行或考虑更复杂的长轮询解决方案,这里解释得很好:
https://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery
非常感谢回答这个问题的评论中的那些人。