从PHP推送代码到javascript

时间:2009-07-14 16:13:24

标签: php jquery server-push

我目前有一段jquery / js代码,每隔几秒钟(5)运行一次GET请求,寻找可能进入的新数据。

当新帖子 可用时,有什么方法可以让PHP“推”或发信号给javascript代码,而不是每隔几秒检查一下是否有新内容?

另一个例子: 我正在为用户调整图像大小。我想向用户显示有关正在进行的过程的实时数据 - 显示诸如“上传到服务器”,“调整图像大小”,“存储图像”等消息。

对此类事情有任何帮助吗?

5 个答案:

答案 0 :(得分:6)

Comet可能正是您所需要的。

它基本上可以通过不让服务器立即响应,保持打开数据的可能性。

问题是apache和IIS目前在处理那么多打开的连接方面不是很好。看看usobans回答。

答案 1 :(得分:4)

这是你不想做的事情。对5秒的javascript调查感到满意。这确实是最好的方法。

答案 2 :(得分:1)

我建议使用SaaS解决方案,例如WebSync On-Demand;限制用户免费使用,使用任何服务器语言,无需设置自己的服务器等等。

答案 3 :(得分:0)

您可以使用某种Comet技术,但这可能需要特殊考虑,具体取决于您的负载。例如,如果您期望负载很重,则可能需要配置Web服务器以便它可以处理所有并发连接。如果你没有对你的网络服务器进行那种控制但是预计会有很多流量,那么最好坚持使用轮询技术。

但如果你只是要向一个小组提供一个页面......那么试试其中一种Comet技术。有jQuery插件可以提供帮助:

Comet and jQuery

答案 4 :(得分:0)

最简单的解决方案是使用您当前实施的5秒轮询。这是最简单的实现,并且通常运行良好。

另一种选择是实现“长轮询”的版本...其中javascript代码打开与服务器的连接并使其保持打开状态(允许服务器使用该连接将数据发送到客户端)更直接的感觉)。当客户端javascript检测到连接已关闭(由于超时),那么它只会启动另一个连接回服务器。服务器代码需要能够处理长轮询客户端的数量,并处理偶尔断开的客户端(在重新连接时为它们排队消息)。

最后,还有“彗星”之类的解决方案可以让你对客户端进行服务器端推送。我不知道基于php的Comet实现......