Linux 터미널에서 실행 중인 PHP 스크립트의 무한 루프를 중지합니다.

Linux 터미널에서 실행 중인 PHP 스크립트의 무한 루프를 중지합니다.

저는 현재 PHP에서 대기열을 생성하는 방법을 가르치는 튜토리얼을 따르고 있습니다. PHP 스크립트에서 무한 루프를 생성했습니다. 당면한 문제에 초점을 맞추기 위해 코드를 단순화했습니다.

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

저는 PuTTy(SSH 연결 포함)를 사용하여 공유 호스팅 계정(godaddy)의 Linux 터미널에 연결하고 있습니다. 터미널에서 실행 하면 php queuefile.php문제 없이 실행될 것입니다(이미 제한된 코드로 테스트됨).for 루프무한 대신에while 루프).

질문:무한 루프가 시작된 후 어떻게 종료할 수 있나요? 코드 생성 옵션에 대해 온라인에서 읽었습니다."조사하다"계속 반복해야 하는 경우 아래 코드와 유사합니다.

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

터미널에 명령을 입력하거나 키 세트를 눌러 스크립트를 종료할 수 있는지 궁금합니다. 스크립트를 종료하는 방법이 있거나 이전 스크립트를 만드는 더 좋은 방법이 있는 경우"확인하다", 귀하의 의견을 환영합니다!

답변1

신호 처리기가 설치되어 있지 않다고 가정하고 프로세스가 포그라운드에 있으면 Ctrl-C를 눌러 SIGINT를 프로세스에 보낼 수 있습니다. 전경에 없으면 사용할 수 있습니다 pkill -INT -f '^php queuefile.php$'.

기본적으로 phpSIGINT를 받은 후 종료됩니다.

어떤 이유로든 신호 처리기가 설치되어 있는 경우 해당 TERM신호(기본적으로 사용됨 pkill)를 시도할 수도 있으며, 결국 프로세스를 종료하는 합리적인 신호를 찾을 수 없으면 다음 SIGKILL과 같이 (무차별 대입)을 사용할 수 있습니다. -TERM으로 pkill전달됩니다 -INT.

관련 정보