Heim > Backend-Entwicklung > PHP-Tutorial > Kann PHP Comet-basiertes Echtzeit-Messaging effektiv verarbeiten?

Kann PHP Comet-basiertes Echtzeit-Messaging effektiv verarbeiten?

DDD
Freigeben: 2024-12-31 00:26:16
Original
544 Leute haben es durchsucht

Can PHP Effectively Handle Comet-Based Real-Time Messaging?

Kann PHP Comet Echtzeit-Messaging unterstützen?

Man könnte darüber nachdenken, Echtzeit-Chat mit PHP als Backend zu implementieren. Eine allgemeine Kritik wirft jedoch einen Schatten auf diese Idee:

„PHP ist Berichten zufolge eine schlechte Wahl für Comet, da es die Aufrechterhaltung dauerhafter Verbindungen mit jedem Browser-Client erfordert. Die Verwendung von mod_php bedeutet, für jeden exklusiv ein Apache-Kind zu binden.“ Client, was die Lösung nicht skalierbar macht Problem

Um dieses Problem anzugehen, untersuchen wir die zugrunde liegenden Herausforderungen:

Thread-Management von Apache

Jede Apache-Anfrage aktiviert einen separaten Arbeitsthread bis zu seiner Fertigstellung. Comet-Anfragen, die für ihre lange Dauer bekannt sind, können diese Threads monopolisieren.

Einschränkungen der gleichzeitigen Ausführung von PHP

Auch wenn die Thread-Zuordnung von Apache gelöst ist, erfordert die Natur von PHP einen eindeutigen Thread pro Anfrage. Infolgedessen kann FastCGI die Situation nicht beheben.

Fortsetzungen: Außerhalb der Reichweite von PHP

Fortsetzungen, die die Wiederaufnahme von Comet-Anfragen bei Ereignisauslösern ermöglichen, sind nicht von Natur aus vorhanden unterstützt durch PHP.

Möglich Lösungen

Trotz dieser Hindernisse gibt es Problemumgehungen:

Apache-Ereignis-MPM:
    Apaches „Ereignis“-MPM behandelt Keep Alive-Zustände anders, funktioniert aber trotzdem Verschiebt das „Schlummern“ des Threads bis nach Abschluss der Anfrage.
  • Laden Balancer-Routing:
  • Durch die Verwendung eines Load Balancers wird es möglich, Apache- und Comet-fähige Server (z. B. Jetty, Tomcat) mit der Bearbeitung von Anfragen an einem einzelnen Port zu beauftragen.
  • Vorbehalte

Diese Lösungen sind mit Vorbehalten verbunden. Das Ereignis-MPM bietet möglicherweise keine wesentlichen Verbesserungen und der Lastausgleich führt zu zusätzlicher Komplexität der Architektur.

Das obige ist der detaillierte Inhalt vonKann PHP Comet-basiertes Echtzeit-Messaging effektiv verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage