Heim >Backend-Entwicklung >PHP-Tutorial >聊天系统 - 关于php做聊天室

聊天系统 - 关于php做聊天室

WBOY
WBOYOriginal
2016-06-06 20:48:221282Durchsuche

我们现在在做一款看直播的产品,有聊天室功能,类似新浪这个:http://video.sina.com.cn/l/pl/globallive/1327915.html ,他那个用的是jetty,我想知道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的,也没多线程。做这么高负载不错了。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn