Falha ao Parar
Fenômeno:
Executando php start.php stop
exibe a mensagem stop fail
.
Primeira Possibilidade
Assumindo que o Workerman foi iniciado em modo de depuração, o desenvolvedor pressionou ctrl z
no terminal, enviando o sinal SIGSTOP
para o Workerman, fazendo com que ele entre em segundo plano e pausado, tornando-se incapaz de responder ao comando de parada (sinal SIGINT
).
Solução:
No terminal onde o Workerman está em execução, digite fg
(para enviar o sinal SIGCONT
) e pressione Enter, trazendo o Workerman de volta para o primeiro plano. Em seguida, pressione ctrl c
(para enviar o sinal SIGINT
) e parar o Workerman.
Se não for possível parar, tente executar os dois comandos a seguir:
killall -9 php
ps aux|grep -i workerman|awk '{print $2}'|xargs kill -9
Segunda Possibilidade
O usuário que está tentando parar o Workerman é diferente do usuário que o iniciou, ou seja, o usuário que tenta parar não tem permissão para fazê-lo.
Solução:
Mude para o usuário que iniciou o Workerman ou use um usuário com permissões mais elevadas para parar o Workerman.
Terceira Possibilidade
O arquivo de PID do processo principal do Workerman foi excluído, resultando no script incapaz de encontrar o processo de PID e falhando ao parar.
Solução:
Mova o arquivo de PID para um local seguro, consulte o manual Worker::$pidFile.
Quarta Possibilidade
O arquivo de PID do processo principal do Workerman não corresponde ao processo do Workerman.
Solução:
Abra o arquivo de PID do processo principal do Workerman para visualizar o PID principal. O arquivo de PID fica por padrão no diretório paralelo ao Workerman. Execute o comando ps aux | grep pid_do_processo_principal
para verificar se o processo correspondente é o processo do Workerman. Se não for, pode ser que o servidor tenha reiniciado, resultando no PID salvo pelo Workerman ser um PID expirado, o qual está sendo utilizado por outro processo, ocasionando a falha ao parar. Se for esse o caso, exclua o arquivo de PID.
Quinta Possibilidade
A extensão grpc está instalada, mas as variáveis de ambiente correspondentes à extensão grpc não estão configuradas. Ao iniciar, será criado um processo adicional, o que causa falha ao parar.
Solução:
Alocar as variáveis de ambiente adequadas para a extensão grpc após a instalação, a fim de evitar a geração desse processo adicional que impede a parada adequada.