Stop Fehler

Phänomen:

Wenn Sie php start.php stop ausführen, wird stop fail angezeigt.

Erste Möglichkeit

Die Voraussetzung ist, dass workerman im Debug-Modus gestartet wurde. Der Entwickler hat im Terminal ctrl z gedrückt, was workerman das SIGSTOP Signal gesendet hat, wodurch workerman in den Hintergrund versetzt und angehalten (pausiert) wurde, sodass der Stopp-Befehl (SIGINT Signal) nicht ausgeführt werden kann.

Lösung:
Geben Sie im Terminal, in dem workerman gestartet wurde, fg (sendet das SIGCONT Signal) ein und drücken Sie die Eingabetaste, um workerman zurück in den Vordergrund zu bringen, und drücken Sie dann ctrl c (sendet das SIGINT Signal), um workerman zu stoppen.

Wenn es nicht möglich ist, zu stoppen, versuchen Sie, die folgenden beiden Befehle auszuführen:

killall -9 php
ps aux|grep -i workerman|awk '{print $2}'|xargs kill -9

Zweite Möglichkeit

Der Benutzer, der den Stop-Befehl ausführt, ist nicht derselbe wie der Benutzer, der workerman gestartet hat, d. h. der Stop-Benutzer hat keine Berechtigung, workerman zu stoppen.

Lösung:
Wechseln Sie zu dem Benutzer, der workerman gestartet hat, oder verwenden Sie einen Benutzer mit höheren Berechtigungen, um workerman zu stoppen.

Dritte Möglichkeit

Die PID-Datei des Hauptprozesses von workerman wurde gelöscht, sodass das Skript den PID-Prozess nicht finden kann, was zu dem Stopp-Fehler führt.

Lösung:
Speichern Sie die PID-Datei an einem sicheren Ort, siehe Handbuch Worker::$pidFile.

Vierte Möglichkeit

Der Prozess, der zur PID-Datei des Hauptprozesses von workerman gehört, ist nicht der workerman-Prozess.

Lösung:
Öffnen Sie die PID-Datei des Hauptprozesses von workerman, um die PID des Hauptprozesses anzuzeigen. Die PID-Datei befindet sich standardmäßig im Verzeichnis parallel zu Workerman. Führen Sie den Befehl ps aux | grep Hauptprozesspid aus, um zu überprüfen, ob der entsprechende Prozess der workerman-Prozess ist. Wenn nicht, könnte es sein, dass der Server neu gestartet wurde, wodurch die von workerman gespeicherte PID abgelaufen ist, und diese PID möglicherweise von einem anderen Prozess verwendet wird, was zu dem Stopp-Fehler führt. In diesem Fall einfach die PID-Datei löschen.

Fünfte Möglichkeit

Das gRPC-Plugin wurde installiert, aber es wurden keine entsprechenden Umgebungsvariablen für das gRPC-Plugin gesetzt. Nach dem Start wird ein zusätzlicher eingebundener Prozess erstellt, was beim Stoppen zu einem Fehler führt.