使用 Memcache 构建 PHP/Javascript 聊天室 [重复]

Posted

技术标签:

【中文标题】使用 Memcache 构建 PHP/Javascript 聊天室 [重复]【英文标题】:Using Memcache to Build a PHP/Javascript Chat Room [duplicate] 【发布时间】:2011-07-14 19:08:20 【问题描述】:

可能重复:Using memcached as a database buffer for chat messages

我的一个朋友告诉我他是如何使用 Memcache 构建 php/javascript 实时聊天室的,但我不知道当数据(可能)每隔几秒更新一次时,Memcache 将如何提供帮助。当然,他让我自己想办法。

任何人都可以提供任何关于 Memcache 在这样的应用程序中的优势的提示吗? (我不想知道具体怎么做,只是想知道 Memcache 如何在数据不断更新的应用程序中加快速度。)

【问题讨论】:

这是你的朋友吗? ***.com/questions/6349617/… 不。这个问题如何与上面链接的另一个问题重复?在这个问题中,我想问以何种方式 memcache 可用于开发聊天室。另一个问题是关于 memcache 的特定用法。可能还有其他我不知道的用途。 【参考方案1】:

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

这确实不是适合这项工作的工具。他显然将数据存储为键 - 这可能比访问数据库更快,但它仍然很糟糕。

如果您希望实施某种实时聊天解决方案,我建议您研究以下技术。阅读它们,您会找到适合您需求的解决方案。

带有聊天服务器的 Flash (AS3) 套接字或 html5 Web 套接字或 COMET(Facebook 使用它。)

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

HTML5 网络套接字 由于对此的支持非常不稳定,我建议您考虑使用 Flash 优雅地降级。您可以使用的库示例:https://github.com/gimite/web-socket-js/

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

while(!d = data()) 
    // no data...

return "data : d"

在大多数情况下,您的浏览器会愉快地坐在那里等待某事发生。收到数据后,浏览器将关闭连接 - 这是您处理数据的时间,然后重新打开连接(触发新的 ajax 请求),以便您监听新事件!

为此,我建议使用非阻塞服务器,例如 Tornado (http://www.tornadoweb.org/)

【讨论】:

以上是关于使用 Memcache 构建 PHP/Javascript 聊天室 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

memcache&redis构建缓存服务器

memcache&redis构建缓存服务器

memcache&redis构建缓存服务器

Memcache的部署和使用(转)

memcache

使用 pear 安装 memcache 时出错