使用Memcache构建PHP/Javascript聊天室

Using Memcache to Build a PHP/Javascript Chat Room

本文关键字:Javascript 聊天室 PHP Memcache 构建 使用      更新时间:2023-09-26

可能重复:
使用memcached作为聊天消息的数据库缓冲区

我的一个朋友告诉我,他是如何使用Memcache构建PHP/Javascript实时聊天室的,但我不知道当数据每隔几秒钟更新一次(可能(时,Memcache会有什么帮助。当然,他让我自己想办法。

有人能告诉我们Memcache在这样的应用程序中有什么优势吗?(我不想知道如何准确地做到这一点,只想知道Memcache如何在数据不断更新的应用程序中加快速度。(

Memcache是memcached(内存对象缓存(的PHP接口

这真的不是适合这份工作的工具。很明显,他将数据存储为密钥——这可能比访问数据库更快,但这仍然很糟糕。

如果你想实现某种实时聊天解决方案,我建议你研究以下技术。仔细阅读它们,你会找到一个适合你需求的解决方案。

  • 带有聊天服务器或
  • HTML5 Web套接字或
  • COMET(Facebook使用这个。(

Flash(AS3(套接字:有很多方法可以构建Actionscript 3聊天系统。如果您使用现有的众多解决方案中的一个,这实际上非常容易。IE:Smartfox。您甚至可以在每次收到消息时使用外部接口来触发Javascript事件。

HTML5 Web套接字由于对这一点的支持相当不稳定,我建议您使用Flash来优雅地降级。可以使用的库示例:https://github.com/gimite/web-socket-js/

COMET/长轮询这是一个非常有趣的方法。实际上,您要做的是通过在某些数据可用之前不返回任何数据来"阻止"HTTP请求服务器端。例如:

while(!d = data()) {
    // no data...
}
return "{data : d}"

在大多数情况下,你的浏览器只是高高兴兴地坐在那里等待事情的发生。一旦收到数据,浏览器就会关闭连接——这就是处理数据的时候,然后重新打开连接(发出一个新的ajax请求(,这样你就可以监听新的事件了!

为了实现这一点,我建议使用非阻塞服务器,如Tornado(http://www.tornadoweb.org/)