Was Entwickler von Workerman wissen müssen

1. Einschränkungen unter Windows

Unter Windows unterstützt Workerman in einem einzelnen Prozess nur 200+ Verbindungen.
Unter Windows kann der count-Parameter nicht verwendet werden, um mehrere Prozesse einzustellen.
Unter Windows können Befehle wie status, stop, reload, restart nicht verwendet werden.
Unter Windows kann Workerman nicht im Hintergrundmodus ausgeführt werden; wenn das CMD-Fenster geschlossen wird, stoppt der Dienst.
Unter Windows ist es nicht möglich, mehrere Listener in einer Datei zu initialisieren.
Es gibt diese Einschränkungen nicht unter Linux; es wird empfohlen, ein Linux-System in der Produktionsumgebung zu verwenden, während für die Entwicklungsumgebung auch ein Windows-System gewählt werden kann.

2. Workerman ist nicht von Apache oder Nginx abhängig

Workerman ist bereits ein Container, ähnlich wie Apache/Nginx; solange die PHP-Umgebung in Ordnung ist, kann Workerman ausgeführt werden.

3. Workerman wird über die Kommandozeile gestartet

Die Startmethode ähnelt der von Apache und erfolgt über einen Befehl (gewöhnlich kann auf Webhosting-Plattformen nicht auf Workerman zugegriffen werden). Die Startoberfläche sieht ähnlich aus wie unten

4. Dauerverbindungen müssen Heartbeats haben

Dauerverbindungen müssen Heartbeats haben, Dauerverbindungen müssen Heartbeats haben, Dauerverbindungen müssen Heartbeats haben, wichtiges wird dreimal gesagt.
Wenn eine Dauerverbindung längere Zeit nicht kommuniziert, wird sie von den Routerknoten entfernt, was zu einem Verbindungsabbruch führt.
Erklärung zu Workerman Heartbeat, Erklärung zu GatewayWorker Heartbeat

5. Client- und Serverprotokoll müssen übereinstimmen, um zu kommunizieren

Dies ist ein häufiges Problem für Entwickler. Zum Beispiel, wenn der Client das WebSocket-Protokoll verwendet, muss auch der Server WebSocket-Protokoll verwenden (new Worker('websocket://0.0.0.0...')), um eine Verbindung herzustellen und kommunizieren zu können.
Versuchen Sie nicht, den WebSocket-Protokollport in der Adresszeile des Browsers zu öffnen, und versuchen Sie nicht, mit dem WebSocket-Protokoll auf nackte TCP-Protokoll-Ports zuzugreifen; die Protokolle müssen übereinstimmen.

Das Prinzip hier ist ähnlich: Wenn Sie mit einem Briten kommunizieren wollen, müssen Sie Englisch verwenden. Wenn Sie mit einem Japaner kommunizieren wollen, müssen Sie Japanisch verwenden. Diese Sprachen sind vergleichbar mit Kommunikationsprotokollen; beide Seiten (Client und Server) müssen dieselbe Sprache verwenden, um kommunizieren zu können, andernfalls ist eine Kommunikation nicht möglich.

6. Mögliche Ursachen für Verbindungsfehler

Ein häufiges Problem beim ersten Benutzen von Workerman ist, dass der Client nicht mit dem Server verbinden kann. Die Gründe sind normalerweise wie folgt:

  1. Die Firewall des Servers (einschließlich der Sicherheitsgruppe des Cloud-Servers) blockiert die Verbindung (50% Wahrscheinlichkeit dafür)
  2. Die verwendeten Protokolle des Clients und des Servers stimmen nicht überein (30% Wahrscheinlichkeit)
  3. IP oder Port sind falsch geschrieben (15% Wahrscheinlichkeit)
  4. Der Server wurde nicht gestartet

7. Verwenden Sie keine exit-, die- oder sleep-Anweisungen

Die Ausführung der exit- oder die-Anweisungen in der Geschäftslogik führt dazu, dass der Prozess beendet wird und die Fehlermeldung WORKER EXIT UNEXPECTED angezeigt wird. Natürlich wird der Prozess beendet und sofort ein neuer Prozess gestartet, um den Dienst fortzusetzen. Wenn ein Wert zurückgegeben werden soll, kann return verwendet werden. Die sleep-Anweisung lässt den Prozess schlafen; während des Schlafens wird keine Geschäftslogik ausgeführt, und das Framework wird ebenfalls gestoppt, was dazu führt, dass alle Clientanfragen dieses Prozesses nicht bearbeitet werden können.

8. Verwenden Sie nicht die Funktion pcntl_fork

pcntl_fork wird verwendet, um neue Prozesse dynamisch zu erstellen; wenn pcntl_fork im Geschäftscode verwendet wird, kann es zu unaufgeräumten Waisenkindprozessen führen, die zu abnormalem Verhalten der Geschäftslogik führen. Das pcntl_fork im Geschäftscode beeinflusst auch die Verarbeitung von Verbindungen, Nachrichten, Verbindungsabbrüchen, Timern und anderen Ereignissen, was zu unvorhersehbaren Ausnahmen führt.

9. Vermeiden Sie Schleifen ohne Ende im Geschäftscode

Im Geschäftscode sollten keine Endlosschleifen vorhanden sein, da dies dazu führt, dass die Kontrolle nicht an das Workerman-Framework zurückgegeben werden kann und somit keine anderen Clientnachrichten empfangen und verarbeitet werden können.

10. Änderungen im Code erfordern einen Neustart

Workerman ist ein langlaufendes Framework, und um die Auswirkungen der neuen Codeänderungen zu sehen, muss Workerman neu gestartet werden.

11. Für Dauerverbindungsanwendungen wird das GatewayWorker-Framework empfohlen

Viele Entwickler verwenden Workerman, um Dauerverbindungs-Anwendungen zu entwickeln, wie zum Beispiel Instant Messaging oder IoT. Für Dauerverbindungs-Anwendungen wird empfohlen, direkt das GatewayWorker-Framework zu verwenden, da es speziell auf der Grundlage von Workerman entwickelt wurde und die Entwicklung von Hintergrundanwendungen für Dauerverbindungen einfacher und benutzerfreundlicher macht.

12. Unterstützung für höhere Parallelität
Wenn die Anzahl der gleichzeitigen Verbindungen im Geschäft mehr als 1000 beträgt, optimieren Sie bitte unbedingt den Linux-Kernel und installieren Sie die Event-Erweiterung.