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