facebook如何在长轮询空响应中防止超过max_execution_time?

时间:2017-09-19 09:08:15

标签: php ajax server-side long-polling

那么,当没有新消息/更新时,facebook如何返回200状态代码?

我尝试了很长时间的轮询并且有效。我现在面临的唯一问题是,当轮询没有返回任何内容时,我遇到500内部服务器错误(超过max_execution_time)。

我不想改变" max_execution_time"民意调查,但我想要的是即使没有新消息/更新也会返回200 OK状态代码。

修改:我已经阅读了各种来源,包括stackoverflow(抱歉,我读过太多,并且无法在此处引用所有内容)我应该返回一个空响应来获取200状态代码。

现在,问题是:

如果没有新的消息/更新(#&#34;当&#34;循环正在运行且即将达到max_execution_time时),如何返回空体响应以防止500内部服务器错误(超出max_execution_time)。< / p>

用一个更简单的术语:
如何在循环到达超时之前返回空响应

1 个答案:

答案 0 :(得分:0)

好的,我找到了一个解决方法,或一个整洁或相当讨厌的解决方案哈哈!

this帖子中名为Adeel的用户的评论给了我这个想法。

我所做的是从现在起30秒后设定一个时间:

$future = date("Y-m-d H:i:s", strtotime("+30 seconds"));

while ($last_number < $new_number){
    $now = date("Y-m-d H:i:s");
    if($now == $future){
        break 1;
    }

    //some codes for iteration and updating $last_number in this while loop
}

echo json_encode();

我不知道这是否是实现我想到的最佳方式,但这是迄今为止唯一的解决方法。

如果你们有更好的解决方案,我很高兴知道。

所以最后,我只是打破了循环哈哈,多么愚蠢。