2013-09-21 45 views
0

花费很长的轮询请求之后超时的请求时,如果该服务器未在一定期限,则返回一个错误不愉快(405 nginx的)之后响应的最佳方式。如何在一段时间后用PHP过期请求?你推荐几秒钟?提前致谢。长轮询 - 某些秒

+0

什么是PHP在做什么,它循环/睡觉等待什么? –

+0

是的,它是一个循环等待的东西。 – user2799274

+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); 
    } 

然后让它重新连接并重新启动一个新的循环。

PS:你实际上得到您的数据流?或者流保持空白直到连接终止?

+0

非常感谢你,我喜欢你的解决方案,但我确实有一个问题。这样循环就是60次尝试,因为如果没有结果,那么1秒的睡眠可能超过60秒的限制,然后返回错误405,不是吗? – user2799274

+0

可以延长nginx的正常限制,让我找的配置 –

+0

尝试像'fastcgi_read_timeout 2M;'在一个位置块(2分钟超时)将包括长轮询,例如像 –