AJAX启动PHP脚本没有充分理由终止

时间:2016-06-14 14:05:08

标签: php jquery ajax

我有一个非常简单的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脚本内部比较整洁,然后在完成时返回。

1 个答案:

答案 0 :(得分:0)

问题是浏览器正在杀死PHP脚本连接,即使脚本配置为超时超过一小时并且按预期运行。我认为浏览器认为它无法正常运行。

这意味着使用长时间运行的PHP脚本轮询服务器是不可能的,您必须在JavaScript端进行或考虑更复杂的长轮询解决方案,这里解释得很好:

https://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery

非常感谢回答这个问题的评论中的那些人。