聊天系统 - 关于php做聊天室
我们现在用的传统的nginx+php+mysql做的,因为一个php-fpm进程要占几十M内存,一台服务器只能开几百个php-fpm进程,勉强承受几千人在线。
回复内容:
我们现在在做一款看直播的产品,有聊天室功能,类似新浪这个:http://video.sina.com.cn/l/pl/globallive/1327915.html ,他那个用的是jetty,我想知道php平台有没有类似适合做聊天室的东西,谢谢!
我们现在用的传统的nginx+php+mysql做的,因为一个php-fpm进程要占几十M内存,一台服务器只能开几百个php-fpm进程,勉强承受几千人在线。
http://cevin.me/archives/realtime-msg.html
聊天这东西首先要考虑的浏览器端和服务器的沟通。比如是 Ajax polling、comet 还是 WebSocket(这其中还涉及到浏览器兼容性问题)。三个方法在服务器的 implementation 是很不同的。
不想自己折腾的话,可以看看 Ratchet。
就用最简单的方式,前端ajax轮询请求,后端做好缓存应该没问题。
聊天内容就不要入库了,直接用redis的list结构,并且限制list的长度如10000条,毕竟在线聊天没人会看那么多的聊天记录。这主要解决了读的问题。
如果一定要保存所有聊天记录,就加个队列,平滑入库。写的问题也能解决。
你必须主动启动一个程序,常驻内存,开若干个线程和若干个端口监听。
php做不了的,因为php的请求都被动,不能主动运行成daemon的,也没多线程。做这么高负载不错了。
下一篇: php解析xml字符串,该怎么处理