Detener fallido
Fenómeno:
Al ejecutar php start.php stop, se muestra el mensaje stop fail
Primera posibilidad
El supuesto es que Workerman fue iniciado en modo debug, y el desarrollador presionó ctrl z en la terminal, enviando una señal SIGSTOP a Workerman, lo que hizo que Workerman entrara en segundo plano y se suspendiera, por lo que no puede responder al comando de stop (señal SIGINT).
Solución:
En la terminal donde se inició Workerman, ingrese fg (enviando la señal SIGCONT) y presione enter, esto llevará a Workerman de vuelta a primer plano. Luego, presione ctrl c (enviando la señal SIGINT) para detener Workerman.
Si no se puede detener, intente ejecutar los siguientes comandos:
killall -9 php
ps aux|grep -i workerman|awk '{print $2}'|xargs kill -9
Segunda posibilidad
El usuario que ejecuta el comando stop no es el mismo que el usuario que inició Workerman, es decir, el usuario stop no tiene permiso para detener Workerman.
Solución:
Cambie al usuario que inició Workerman, o use un usuario con más privilegios para detener Workerman.
Tercera posibilidad
El archivo pid del proceso principal de Workerman fue eliminado, lo que provoca que el script no pueda encontrar el proceso pid, resultando en un fallo al detener.
Solución:
Guarde el archivo pid en una ubicación segura, consulte el manual Worker::$pidFile.
Cuarta posibilidad
El proceso correspondiente al archivo pid del proceso principal de Workerman no es un proceso de Workerman.
Solución:
Abra el archivo pid del proceso principal de Workerman para ver el pid del proceso principal; el archivo pid se encuentra por defecto en el directorio paralelo de Workerman. Ejecute el comando ps aux | grep pid del proceso principal para verificar si el proceso correspondiente es un proceso de Workerman. Si no lo es, es posible que el servidor haya reiniciado, lo que hizo que el pid guardado por Workerman sea un pid obsoleto, y este pid fue utilizado por otro proceso, causando el fallo al detener. Si este es el caso, simplemente elimine el archivo pid.
Quinta posibilidad
Se instaló la extensión grpc, pero no se configuraron las variables de entorno correspondientes para la extensión grpc. Al iniciarse, generará un proceso adjunto adicional, lo que provocará un fallo al detener.