Vor kurzem hat PHPChina ein spezielles Thema zur PHP-Chatroom-Technologie gestartet. Da ich gerade an diesem Projekt arbeite, möchte ich hier meine persönliche Meinung äußern.
Hauptfunktionen des Chatrooms:
1. Registrieren, anmelden, abmelden, Informationen ändern.
2. Der Benutzer beantragt die Erstellung eines Chatrooms und passt die Chatroom-Attribute an.
3. Zeigen Sie den Namen, die Beschreibung, den Moderator, die Ankündigungen und die Werbung des Chatrooms an.
4. Zeigen Sie die Liste der Online-Benutzer in Echtzeit an und Sie können Online-Benutzerinformationen (Spitzname, E-Mail, IP, Online-Zeit usw.) anzeigen.
5. Veröffentlichen Sie Chat-Inhalte, Schriftartattribute, Aktionen, Ausdrücke und gebräuchliche Phrasen.
6. Ermöglicht Unsichtbarkeit, privaten Chat, Scrollen, Benutzerblockierung, Bildschirmlöschung, Chat-Szenenauswahl, Hintergrundmusik und die Anpassung der Sendemethode.
7. Administratoren haben das Recht, Mitglieder zu verwalten (sie rauszuwerfen, ihnen das Reden zu verbieten und Verwaltungsrechte zu übertragen).
Dinge zu beachten:
1. Es ist verboten, eine Frame-Struktur zu verwenden (iFrame bringt außer der Reduzierung Ihrer Arbeitsbelastung keine Vorteile).
2. Der Front-End- und Hintergrundcode sind vollständig getrennt, Daten werden nur über den Ajax-Kanal übertragen und es sollten nur die erforderlichen Daten übertragen werden. (Daten im Vordergrund anzeigen und Daten im Hintergrund verarbeiten)
3. Es ist verboten, die gesamte durch das Programm verursachte Seite zu aktualisieren und nur den Inhalt zu aktualisieren, der geändert werden muss (es ist verboten, Header und Meta zum Aktualisieren der Seite zu verwenden).
4. Bei der Übermittlung von Chat-Inhalten können Sie nicht blind auf die Geschwindigkeit der Benutzererfahrung achten und die eigentliche Übermittlungsreihenfolge für Chat-Datensätze ignorieren. (Das heißt, die übermittelten Chat-Aufzeichnungen sollten in der tatsächlichen Reihenfolge auf dem Server neu organisiert und dann an den Client übertragen werden, da möglicherweise viele Personen gleichzeitig Informationen übermitteln.)
Verwendete Technologien:
1. Die Brücke zwischen Front- und Backend-AJAX. Sie können zwischen Jquery und XAJAX wählen. Ich bevorzuge JQuery, das schnell, einfach und langlebig ist, über viele Plug-Ins verfügt und schnell aktualisiert wird.
2. Die Form des Datenträgers-XML. Tatsächlich sind allgemeine Chatroom-Daten nicht sehr kompliziert und JSON reicht aus.
3. Datenbankabstraktionsschicht – ADODB. Die Verwendung von PDO geht schneller. Ich bin es bereits gewohnt, ADODB zu verwenden.
4. Das zugrunde liegende Datenspeichermedium – MySQL. Daran besteht kein Zweifel.
5. Datenzwischenspeichermedium-Memcache. Speichern Sie Hochgeschwindigkeits-Lese- und Schreibdaten im gemeinsam genutzten Memcache-Speicher, um die Belastung der Datenbank zu verringern.
6. Wenn Sie Video und Sprache implementieren möchten, benötigen Sie die Unterstützung des Servers FMS (Flash Media Server) und der Client muss den Flash Player installieren. Und es beinhaltet die Dateninteraktion zwischen HTML, Javascript, Flash und dem Hintergrund. Hierzu gibt es nicht viele Informationen.
Dies sind die Kerntechnologien. Bei der tatsächlichen Anwendungsentwicklung müssen noch viele Detailprobleme gelöst werden.
Zum Beispiel: Wie gehe ich mit Aktualisierungen von Online-Listen um?
Es gibt zwei Möglichkeiten:
1. Aktualisieren Sie die gesamte Liste (unabhängig davon, ob Aktualisierungen vorhanden sind oder nicht).
2. Fügen Sie neue Online-Mitglieder hinzu, löschen Sie Offline-Mitglieder und ändern Sie Mitglieder, deren Informationen sich geändert haben.
Offensichtlich ist die zweite Option die beste Option.
Wie gehe ich mit XmlHttpRequest-Parallelitätsproblemen um?
JavaScript ist Single-Threaded. Wenn zwei XmlHttpRequest-Objekte gleichzeitig vorhanden sind, können leicht Probleme auftreten, die eine Kontrolle der Generierung und des Endes von XmlHttpRequest erforderlich machen.
Zu den Daten, die wir im Chatroom aktualisieren müssen, gehören hauptsächlich: Online-Liste (einschließlich Aktualisierungen der Mitgliedsinformationen), Chat-Datensätze, Chatroom-Attribute usw. Die Häufigkeit dieser Aktualisierungen ist inkonsistent (wenn die Zeiten konsistent sind, müssen Sie nur eine XmlHttpRequest erstellen, um damit umzugehen). Die Aktualisierung des Chat-Verlaufs dauert kürzer und die Aktualisierung von Online-Listen kann etwas länger dauern. Wenn Sie XmlHttpRequest-Objekte separat erstellen, ohne ein Framework zu verwenden, treten wahrscheinlich Parallelitätsprobleme auf. Hierzu ist die Schaffung einer Zeit- und Prozesssteuerungsfunktion erforderlich.
setInterval('process_control()',3000) //Wird alle drei Sekunden einmal aufgerufen
Die Funktion process_control implementiert die Aufgabenplanung, z. B. das Ausführen von Aufgaben in einem bestimmten Intervall und das Ausführen der nächsten Aufgabe erst, nachdem die Aufgabe abgeschlossen ist.