Остановка не удалась
Симптомы:
Запуск команды php start.php stop
вызывает сообщение об ошибке stop fail
Первая возможность
Если Workerman был запущен в режиме отладки, и разработчик отправил сигнал SIGSTOP
в фоновом режиме, нажав ctrl z
в терминале, то это может привести к тому, что Workerman будет находиться в состоянии приостановки в фоне, и не сможет отреагировать на команду остановки (сигнал SIGINT
).
Решение:
В терминале, где был запущен Workerman, введите команду fg
(для отправки сигнала SIGCONT
) и нажмите Enter, чтобы вернуть Workerman в активное состояние. Затем используйте ctrl c
(для отправки сигнала SIGINT
) для остановки Workerman.
Если это не поможет, попробуйте выполнить следующие две команды:
killall -9 php
ps aux|grep -i workerman|awk '{print $2}'|xargs kill -9
Вторая возможность
Пользователь, выполняющий команду остановки, отличается от пользователя, запустившего Workerman, и поэтому не имеет разрешения на остановку Workerman.
Решение:
Переключитесь на пользователя, который запустил Workerman, или используйте пользователя с более высокими правами для остановки Workerman.
Третья возможность
Файл PID главного процесса Workerman был удален, из-за чего скрипт не может найти соответствующий процесс, что приводит к ошибке остановки.
Решение:
Сохраните файл PID в безопасном месте, см. документацию Worker::$pidFile.
Четвертая возможность
PID главного процесса Workerman соответствует другому процессу, а не процессу Workerman.
Решение:
Откройте файл PID главного процесса Workerman, чтобы просмотреть PID главного процесса. По умолчанию файл PID находится в параллельной директории Workerman. Запустите команду ps aux | grep PID главного процесса
, чтобы убедиться, что соответствующий процесс является процессом Workerman. Если это не так, возможно, сервер был перезагружен, из-за чего сохраненный Workerman PID устарел и был использован другим процессом, что привело к ошибке остановки. В этом случае просто удалите файл PID.
Пятая возможность
Если было установлено расширение grpc, но не были установлены соответствующие переменные среды для расширения grpc, то при запуске будет создан дополнительный вспомогательный процесс, что может привести к ошибке при остановке.