Heim Backend-Entwicklung PHP-Tutorial 用memcache 来实现聊天室的可能性探讨.该如何解决

用memcache 来实现聊天室的可能性探讨.该如何解决

Jun 13, 2016 pm 01:48 PM
key memcache nginx redis request

用memcache 来实现聊天室的可能性探讨.
突然想起这么个话题,当然要做复杂的是肯定不行的,我们只探讨将文本通过memcache实现聊天应用的可能..
首先摆在我们面前的是这个key要怎么维护?有没有实现的可能?

------解决方案--------------------
由于需要记录聊天内容和聊天人的信息
所以每笔数据应该是一个“结构”而不是单一的值

鉴于聊天内容是不可修改的,所以 key 并无实际意义,递增即可
至多是取时间值
------解决方案--------------------
聊天室需要缓存的东西不是很多啊。
------解决方案--------------------
研究过python的聊天室...关注一下
------解决方案--------------------
进来学习,这一块没什么经验。
------解决方案--------------------
本来聊天室就是个蛋疼的功能。得耗费多少资本啊。

没有这方面的经验,实现的方法有多种。把聊天数据存数据库或本地文件或memcache,显示数据会用到推送。听说还可以用socket来实现。 也没测试过。不知道哪种效率高。
------解决方案--------------------

探讨
本来聊天室就是个蛋疼的功能。得耗费多少资本啊。

没有这方面的经验,实现的方法有多种。把聊天数据存数据库或本地文件或memcache,显示数据会用到推送。听说还可以用socket来实现。 也没测试过。不知道哪种效率高。

------解决方案--------------------
虽然不懂web, 但是跑fcgi做单独的聊天服务器是可行的.
------解决方案--------------------
探讨

引用:
本来聊天室就是个蛋疼的功能。得耗费多少资本啊。

没有这方面的经验,实现的方法有多种。把聊天数据存数据库或本地文件或memcache,显示数据会用到推送。听说还可以用socket来实现。 也没测试过。不知道哪种效率高。


用websocket做长连接是很不错的!

------解决方案--------------------
探讨

虽然不懂web, 但是跑fcgi做单独的聊天服务器是可行的.

------解决方案--------------------
除非浏览器或flash本身是服务器时,如有开放端口,推技术才可能成真。

http是请求-响应式的。 是要是uri,都可请求。

猜想QQ, 每个用户都有好友的端口中。
也是有两种方式实现: 一是有数据存中央数据库;二是一个用户发言,然后向群里广播。


------解决方案--------------------
memcached的替代品? 
redis吧,数据放入内存,但也支持在硬盘上持久化保存,配置正常的情况下,性能大概是memcached的十倍(网上的数据,俺自己测没打到过,但5倍以上是确认的)。

另外,做聊天室是可行的,并且也有类似的代码, redis官网有个示例,是完全用redis来做的模仿twiiter的页面。project名称好像叫“retwis”

以前也看到过设计,一般key是用散列值即可吧,比如 用户名_时间 然后md5一下之类的...
------解决方案--------------------
探讨

除非浏览器或flash本身是服务器时,如有开放端口,推技术才可能成真。

http是请求-响应式的。 是要是uri,都可请求。

猜想QQ, 每个用户都有好友的端口中。
也是有两种方式实现: 一是有数据存中央数据库;二是一个用户发言,然后向群里广播。

------解决方案--------------------
时间戳做key

由于mem 的value值是有大小限制的

可以每过一段时间生成个key 然后内部是json格式

例如 
每五分钟一个key 
然后把这五分钟内的聊天记录都放到mem中

然后 用户登录根据当前的时间戳来查询 
不知道可否
------解决方案--------------------
呃,好吧,从目前的经验来看,如果单台服务器来做的话,私以为用长连接是不合适的,短连接做聊天室能够实现更多的访问量。

假设一台16核心16G的服务器,Nginx + PHP-FCGI的话,大概可靠并发能达到3W,那么长连接,最多也就是3W用户喽?(3W是俺自己测试的情况,俺渣....不过另外也参考了张宴的blog,姑且国内nginx的先驱者吧) 但短连接的话,就看Nginx每秒最多的request和 后端存储每秒最多request的能力了

以下是nginx和redis的单独 request能力 测试:
nginx,以phpinfo.php为测试内容

PHP code
./webbench -c 10000 -t 30 "http://127.0.0.1/test.php"
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://127.0.0.1/test.php
10000 clients, running 30 sec.

Speed=230470 pages/min, 46263036 bytes/sec.
Requests: 115235 susceed, 0 failed.
<br><font color="#e78608">------解决方案--------------------</font><br>没搞 过这方面,,表示很有压力。。<br><br>
Nach dem Login kopieren
探讨

呃,好吧,从目前的经验来看,如果单台服务器来做的话,私以为用长连接是不合适的,短连接做聊天室能够实现更多的访问量。
Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Die nicht patchbare Sicherheitslücke im Yubico-Zwei-Faktor-Authentifizierungsschlüssel beeinträchtigt die Sicherheit der meisten Yubikey 5-, Security Key- und YubiHSM 2FA-Geräte Die nicht patchbare Sicherheitslücke im Yubico-Zwei-Faktor-Authentifizierungsschlüssel beeinträchtigt die Sicherheit der meisten Yubikey 5-, Security Key- und YubiHSM 2FA-Geräte Sep 04, 2024 pm 06:32 PM

Eine nicht patchbare Schwachstelle im Yubico-Zwei-Faktor-Authentifizierungsschlüssel hat die Sicherheit der meisten Yubikey 5-, Security Key- und YubiHSM 2FA-Geräte beeinträchtigt. Die Feitian A22 JavaCard und andere Geräte, die TPMs der Infineon SLB96xx-Serie verwenden, sind ebenfalls anfällig.Alle

Caching-Mechanismus und Anwendungspraxis in der PHP-Entwicklung Caching-Mechanismus und Anwendungspraxis in der PHP-Entwicklung May 09, 2024 pm 01:30 PM

In der PHP-Entwicklung verbessert der Caching-Mechanismus die Leistung, indem er häufig aufgerufene Daten vorübergehend im Speicher oder auf der Festplatte speichert und so die Anzahl der Datenbankzugriffe reduziert. Zu den Cache-Typen gehören hauptsächlich Speicher-, Datei- und Datenbank-Cache. In PHP können Sie integrierte Funktionen oder Bibliotheken von Drittanbietern verwenden, um Caching zu implementieren, wie zum Beispiel Cache_get() und Memcache. Zu den gängigen praktischen Anwendungen gehören das Zwischenspeichern von Datenbankabfrageergebnissen zur Optimierung der Abfrageleistung und das Zwischenspeichern von Seitenausgaben zur Beschleunigung des Renderings. Der Caching-Mechanismus verbessert effektiv die Reaktionsgeschwindigkeit der Website, verbessert das Benutzererlebnis und reduziert die Serverlast.

Der Zugriff auf WordPress -Site -Datei ist eingeschränkt: Warum ist meine .txt -Datei nicht über den Domänennamen zugegriffen? Der Zugriff auf WordPress -Site -Datei ist eingeschränkt: Warum ist meine .txt -Datei nicht über den Domänennamen zugegriffen? Apr 01, 2025 pm 03:00 PM

Der Zugriff auf WordPress -Site -Datei ist eingeschränkt: Fehlerbehebung Der Grund, warum auf die TXT -Datei in letzter Zeit nicht zugegriffen werden kann. Einige Benutzer haben ein Problem beim Konfigurieren des MINI -Programms Business Domain Name: � ...

Warum tritt bei der Installation einer Erweiterung mit PECL in einer Docker -Umgebung ein Fehler auf? Wie löst ich es? Warum tritt bei der Installation einer Erweiterung mit PECL in einer Docker -Umgebung ein Fehler auf? Wie löst ich es? Apr 01, 2025 pm 03:06 PM

Ursachen und Lösungen für Fehler Bei der Verwendung von PECL zur Installation von Erweiterungen in der Docker -Umgebung, wenn die Docker -Umgebung verwendet wird, begegnen wir häufig auf einige Kopfschmerzen ...

Die Zusammenstellung und Installation von Redis auf Apple M1 Chip Mac ist fehlgeschlagen. Wie kann ich Php7.3 -Kompilierungsfehler beheben? Die Zusammenstellung und Installation von Redis auf Apple M1 Chip Mac ist fehlgeschlagen. Wie kann ich Php7.3 -Kompilierungsfehler beheben? Mar 31, 2025 pm 11:39 PM

Probleme und Lösungen, die beim Kompilieren und Installieren von Redis auf Apple M1 Chip Mac auftreten, können viele Benutzer ...

Wie kann ich Php5.6 und PHP7 durch die NGINX -Konfiguration auf demselben Server koexistieren? Wie kann ich Php5.6 und PHP7 durch die NGINX -Konfiguration auf demselben Server koexistieren? Apr 01, 2025 pm 03:15 PM

Das gleichzeitige Ausführen mehrerer PHP -Versionen im selben System ist eine häufige Anforderung, insbesondere wenn verschiedene Projekte von verschiedenen Versionen von PHP abhängen. Wie man auf demselben ...

Wie löste ich den Hintergrund asynchroner Stapel -Senden von SMS -Nachrichten im Vordergrund aus, ohne die Benutzererfahrung zu beeinflussen? Wie löste ich den Hintergrund asynchroner Stapel -Senden von SMS -Nachrichten im Vordergrund aus, ohne die Benutzererfahrung zu beeinflussen? Mar 31, 2025 pm 11:45 PM

Wie implementieren Sie die Funktion des Auslösens des asynchronen Stapel -Sendens von SMS -Nachrichten im Vordergrund? In einigen Anwendungsszenarien müssen Benutzer durch Vordergrundvorgänge Stapel im Hintergrund auslösen ...

Wie kann man Node.js oder Python -Dienste in Lampenarchitektur effizient integrieren? Wie kann man Node.js oder Python -Dienste in Lampenarchitektur effizient integrieren? Apr 01, 2025 pm 02:48 PM

Viele Website -Entwickler stehen vor dem Problem der Integration von Node.js oder Python Services unter der Lampenarchitektur: Die vorhandene Lampe (Linux Apache MySQL PHP) Architekturwebsite benötigt ...

See all articles