Facebook 如何防止在长轮询空响应中超过 max_execution_time?
How does facebook prevent exceeding max_execution_time in long polling empty responses?
那么,facebook return 200 status code 是怎么在没有新的时候 message/update 的?
我尝试了长轮询并且有效。我现在面临的唯一问题是,当轮询没有 returning 任何东西时,我遇到了 500 内部服务器错误(超过 max_execution_time)。
我不想改变投票的 "max_execution_time",但我想要 return 一个 200 OK 状态代码,即使没有新的 messages/updates。
编辑:
我从各种来源阅读过,包括 Whosebug(抱歉,我读了太多,无法在这里全部引用)说我应该 return 一个空响应以获得 200 状态代码。
现在,新问题是:
如何在没有新的 message/update 时 return 空主体响应(而 "while" 循环是 运行 并且即将到达 max_execution_time ) 以防止 500 Internal server error (exceeded max_execution_time).
用更简单的术语来说:
如何 return 在 while 循环到达超时之前清空响应
好的,我找到了一个解决方法,或者一个巧妙或相当讨厌的解决方案哈哈!
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();
我不知道这是否是实现我的想法的最佳方法,但这是迄今为止唯一可行的方法。
如果你们有更好的解决方案,我很乐意知道。
所以最后只好跳出循环哈哈 傻傻的cou
那么,facebook return 200 status code 是怎么在没有新的时候 message/update 的?
我尝试了长轮询并且有效。我现在面临的唯一问题是,当轮询没有 returning 任何东西时,我遇到了 500 内部服务器错误(超过 max_execution_time)。
我不想改变投票的 "max_execution_time",但我想要 return 一个 200 OK 状态代码,即使没有新的 messages/updates。
编辑:
我从各种来源阅读过,包括 Whosebug(抱歉,我读了太多,无法在这里全部引用)说我应该 return 一个空响应以获得 200 状态代码。
现在,新问题是:
如何在没有新的 message/update 时 return 空主体响应(而 "while" 循环是 运行 并且即将到达 max_execution_time ) 以防止 500 Internal server error (exceeded max_execution_time).
用更简单的术语来说:
如何 return 在 while 循环到达超时之前清空响应
好的,我找到了一个解决方法,或者一个巧妙或相当讨厌的解决方案哈哈!
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();
我不知道这是否是实现我的想法的最佳方法,但这是迄今为止唯一可行的方法。
如果你们有更好的解决方案,我很乐意知道。
所以最后只好跳出循环哈哈 傻傻的cou