长轮询 - 在特定秒数后超时请求的最佳方法

时间:2013-09-21 18:44:41

标签: php nginx long-polling

采取长轮询请求,如果服务器在一段时间后没有响应,则返回一个令人不快的错误(使用nginx时为405)。如何在几秒后使用PHP使请求失效?你推荐多少秒?提前谢谢你。

1 个答案:

答案 0 :(得分:1)

好的,这就是我要怎么做的,我已经为我的一个业余时间项目构建了一个类似的脚本,而不是做一个完整的无限循环,我会用一个有限数量的循环做一个循环,然后睡一觉中间用于保存大量的cpu使用,可能不完全是你的代码设计的方式,但它很好,并且它使用普通的200代码优雅地停止,当然你可以改变循环计数器和睡眠值以适合你的代码。

<?php
    header('Cache-Control: no-cache');
    header("Content-Type: text/event-stream");
    $i = 60;
    while($i--){
        echo "data: ".date("Y-m-d H:i:s")."\n\n";
        echo "\n\n";
        ob_flush();
        flush();
        sleep(1);
    }

然后将其留给javascript重新连接并开始新循环。

PS:您实际上是否将数据流式化?或者流保持空白直到连接终止?