Parando infinito loop do script php executado no terminal linux

0

Atualmente, estou seguindo um tutorial que ensina como criar uma fila no php. Um loop infinito foi criado em um script php. Eu simplifiquei o código para me concentrar na questão:

while(1) {
        echo 'no jobs to do - waiting...', PHP_EOL;
        sleep(10);  
}

Eu uso o PuTTy (com uma conexão SSH) para me conectar ao terminal do Linux na minha conta de hospedagem compartilhada (godaddy). Se eu rodar php queuefile.php no terminal, eu sei que ele irá rodar sem problemas (já testei o código com um finito para loop ao invés do infinito while loop ).

PERGUNTA: Como pude sair do loop infinito depois de iniciado? Eu já li on-line a opção de criar código que "verifica" se ele deve continuar dando um loop com algo como o código a seguir:

$bool = TRUE; 
while ($bool)
{
  if(!file_exists(allow.txt)){$bool = FALSE}
  //... the rest of the code

Embora eu esteja curioso para saber se pode haver um comando que eu possa digitar no terminal, ou um conjunto de chaves que eu possa enviar, o script terminará. Se houver alguma maneira de terminar o script ou se houver uma maneira melhor de fazer o "check" anterior , eu adoraria seu feedback!

    
por Webeng 15.05.2016 / 19:55

1 resposta

2

Supondo que você não instalou nenhum manipulador de sinais, você pode enviar o SIGINT para o processo pressionando Ctrl-C se estiver em primeiro plano. Se não estiver em primeiro plano, você pode usar pkill -INT -f '^php queuefile.php$' .

Por padrão, php será encerrado ao receber o SIGINT.

Se, por algum motivo, houver um manipulador de sinais instalado, você também pode tentar o sinal TERM (o padrão com pkill ) e, por fim, se não encontrar nenhum sinal razoável para eliminar o processo, pode usar o (violento e forçado) SIGKILL , passando -TERM para pkill no lugar de -INT .

    
por 15.05.2016 / 19:57