0

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

4

1 回答 1

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:你真的让你的数据流式传输吗?或者在连接终止之前流是否保持空白?

于 2013-09-21T21:41:23.160 回答