我的一个朋友告诉我他是如何使用 Memcache 构建 PHP/Javascript 实时聊天室的,但我不知道当数据(可能)每隔几秒更新一次时,Memcache 将如何提供帮助。当然,他让我自己解决。
任何人都可以提供任何关于 Memcache 在这样的应用程序中的优势的提示吗?(我不想知道如何准确地做到这一点,只是想知道 Memcache 如何在数据不断更新的应用程序中加快速度。)
我的一个朋友告诉我他是如何使用 Memcache 构建 PHP/Javascript 实时聊天室的,但我不知道当数据(可能)每隔几秒更新一次时,Memcache 将如何提供帮助。当然,他让我自己解决。
任何人都可以提供任何关于 Memcache 在这样的应用程序中的优势的提示吗?(我不想知道如何准确地做到这一点,只是想知道 Memcache 如何在数据不断更新的应用程序中加快速度。)
Memcache 是 memcached(内存对象缓存)的 PHP 接口
它确实不是这项工作的正确工具。他显然将数据存储为密钥 - 这可能比访问数据库更快,但它仍然很糟糕。
如果您希望实施某种实时聊天解决方案,我建议您研究以下技术。阅读它们,您会找到适合您需求的解决方案。
Flash (AS3) 套接字: 构建 Actionscript 3 聊天系统的方法有很多。如果您使用现有的众多解决方案之一,这实际上非常容易。即:Smartfox。您甚至可以在每次收到消息时使用外部接口触发 Javascript 事件。
HTML5 Web Sockets 由于对此的支持非常不稳定,我建议您考虑使用 Flash 优雅地降级。您可以使用的库示例:https ://github.com/gimite/web-socket-js/
COMET/Long polling 这是一个非常有趣的方法。实际上,您要做的是通过在某些数据可用之前不返回任何数据来“阻止”HTTP 请求服务器端 EG:
while(!d = data()) {
// no data...
}
return "{data : d}"
在大多数情况下,您的浏览器会愉快地坐在那里等待某事发生。一旦接收到数据,浏览器将关闭连接 - 这是您处理数据的时间,然后重新打开连接(触发新的 ajax 请求),以便您监听新事件!
为此,我建议使用非阻塞服务器,例如 Tornado (http://www.tornadoweb.org/)