2010-06-04 158 views
3

我需要创建一个类似于Facebook聊天的聊天。PHP实时与ajax轮询聊天

我想使用ajax轮询(每2-3秒发送一次请求)。

这是一个很好的方法吗?或者我需要使用其他服务器端语言,如erlang和server-comet?

+1

这可能是有趣的:Facebook工程师关于他们的聊天实施的说明http://www.facebook.com/note.php?note_id=14218138919 – 2010-06-04 11:37:13

回答

2

或者我需要使用其他服务器端语言

没有 - 这不是真正相关的 - 最大的问题是,HTTP不支持推送通知 - 让你在Web服务器上使用的语言是几乎不相关。

server-comet?

彗星是编程技术 - 不是一种语言 - 专门设计用于解决在HTTP中无法推送的问题。传统上,浏览器发送请求,网络服务器创建一个响应,然后将其发送回客户端。与彗星,Web服务器等待直到:

1)有一些更新的响应

2)定时器期满

发送响应之前为包括。这样做的后果是,如果与Web服务器处于非活动连接状态,会导致大量数据 - 这可能会导致性能问题。

另一种方法是使用HTTP来将客户端程序在浏览器中运行,该浏览器使用不同的协议连接到聊天服务器。它可以通过ActiveX,Java或Flash来实现 - 所有这些都有很大的缺点 - 不仅仅是可移植性。

有几个使用PHP和JavaScript的预先编写的解决方案 - 提示 - 如果文档没有提到Naggle,那么他们可能没有考虑到可伸缩性/性能。

C.

0

这取决于你猜我有多少用户。它会在你没有很多用户时工作(这是他们过去的做法)。但在我看来,聊天并不是实时的,因为您可能会延迟x秒(轮询间隔)。

对于大量的并发用户,轮询模型不会扩展。那么你应该真的看看非阻塞的长轮询(至少)。我认为如果可能的话,您应该研究非阻塞性的长轮询技术,因为这是大型网站如何进行实时应用。但是你的服务器应该允许你安装其他的编程语言,因为PHP不适合这种技术。