Stop Failure


Running php start.php stop prompts stop fail.

The first possibility

The premise is that workerman was started in debug mode, and the developer pressed ctrl z in the terminal to send a SIGSTOP signal to workerman, causing workerman to enter the background and suspend, so it cannot respond to the stop command (SIGINT signal).

Enter fg in the terminal where workerman is started (send SIGCONT signal), then press Enter to bring workerman back to the foreground and press ctrl c (send SIGINT signal) to stop workerman.

If unable to stop, try running the following two commands:

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

The second possibility

The user running the stop command is different from the user who started workerman, meaning the stop user does not have permission to stop workerman.

Switch to the user who started workerman, or use a user with higher privileges to stop workerman.

The third possibility

The saved PID file of the workerman main process is deleted, causing the script to not find the PID process and resulting in a stop failure.

Save the PID file in a secure location, see documentation Worker::$pidFile.

The fourth possibility

The process corresponding to the workerman main process PID file is not the workerman process.

Open the PID file of the workerman main process to view the main process PID, the PID file is by default located in the same directory as Workerman. Run the command ps aux | grep main-process-pid to check if the corresponding process is a Workerman process. If not, it may be due to a server restart, causing the PID saved by workerman to be an outdated PID that is currently being used by another process, resulting in a stop failure. In this case, simply delete the PID file.

The fifth possibility

The grpc extension is installed, but the corresponding environment variables are not set for the grpc extension, causing an additional mounted process to be forked when started, which leads to a failure when stopping.