2012-02-26 44 views
0

我需要使用PHP开发HTTP推送实现HTTP推(在PHP)与出,它发回一个消息到浏览器每20秒..,我需要在服务器上显示使用任何文库或插座

有没有什么办法可以在PHP中使用任何套接字或库实现http push?

+0

我需要开发使用PHP的HTTP推送,它每20秒发送一条消息给浏览器..我需要在服务器上显示。 – user1234077 2012-02-26 17:07:47

+0

正如Andrew所建议的那样,下面,通过JavaScript进行轮询通常是一种更好的解决方案,而不是推送运行,捆绑Apache连接。看看[Comet](http://en.wikipedia.org/wiki/Comet_%28programming%29)。 – ghoti 2012-02-27 12:40:31

回答

3

当然:不要让你的PHP脚本终止,只要你想保持连接打开。由于您每20秒产生一次输出,因此连接超时的可能性要小得多。

有很多方法来实现这一目标,包括阻塞(如睡眠()以下)或busy waiting,但最简单的解决办法是:

while(true){ 
    generate_output(); 
    sleep(20); 
} 

您可能需要处理在客户端的意外连接终止,但这是它的杰作。检查您的系统配置,查看您可以处理多少个打开的连接。 (在Apache中,看到的MaxClients)

至于客户端,看到这个答案https://stackoverflow.com/a/7953033/329062

1

做到这一点的唯一方法是使用WebSockets,“长轮询”,或一个AJAX请求每20秒(即使没有更新)。您的解决方案将取决于您想要支持哪些浏览器。例如,较新的浏览器支持Web套接字,但较旧的浏览器不支持。我会推荐研究Web套接字。对于这种情况,这是一个很好的解决方案。