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: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!