Échec de l'arrêt
Phénomène :
Lorsque vous exécutez php start.php stop, il affiche stop fail
Première possibilité
À condition que Workerman ait été démarré en mode debug, le développeur a appuyé sur ctrl z dans le terminal, envoyant le signal SIGSTOP à Workerman, ce qui a entraîné le passage de Workerman en arrière-plan et son suspension, rendant impossible la réponse à la commande stop (signal SIGINT).
Solution :
Dans le terminal où Workerman a été démarré, tapez fg (envoyant le signal SIGCONT) puis appuyez sur Entrée pour ramener Workerman en avant-plan, puis appuyez sur ctrl c (envoyant le signal SIGINT) pour arrêter Workerman.
Si l'arrêt échoue, essayez d'exécuter les deux commandes suivantes :
killall -9 php
ps aux|grep -i workerman|awk '{print $2}'|xargs kill -9
Deuxième possibilité
L'utilisateur exécutant la commande stop n'est pas le même que l'utilisateur ayant démarré Workerman, c'est-à-dire que l'utilisateur stop n'a pas la permission d'arrêter Workerman.
Solution :
Changez pour l'utilisateur ayant démarré Workerman, ou utilisez un utilisateur ayant des permissions plus élevées pour arrêter Workerman.
Troisième possibilité
Le fichier pid du processus principal de Workerman a été supprimé, empêchant le script de trouver le processus pid, ce qui entraîne l'échec de l'arrêt.
Solution :
Conservez le fichier pid à un endroit sûr, voir le manuel Worker::$pidFile.
Quatrième possibilité
Le processus correspondant au fichier pid du processus principal de Workerman n'est pas un processus Workerman.
Solution :
Ouvrez le fichier pid du processus principal de Workerman pour vérifier le pid du processus principal, le fichier pid est par défaut situé dans le répertoire parallèle de Workerman. Exécutez la commande ps aux | grep pid du processus principal pour vérifier si le processus correspondant est un processus Workerman, sinon, il se peut que le serveur ait redémarré, provoquant l'utilisation d'un pid périmé enregistré par Workerman, qui a été pris par un autre processus, entraînant un échec de l'arrêt. Dans ce cas, vous pouvez simplement supprimer le fichier pid.
Cinquième possibilité
L'extension grpc a été installée, mais les variables d'environnement correspondantes de l'extension grpc n'ont pas été définies, ce qui entraîne la création d'un processus monté supplémentaire lors du démarrage, entraînant un échec lors de l'arrêt.