Linux

從 php 腳本停止無限循環在 linux 終端中執行

  • May 15, 2016

我目前正在學習如何在 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

雖然我很好奇是否有可以在終端中輸入的命令,或者我可以按下的一組鍵會導致腳本終止。如果有任何終止腳本的方法,或者如果有更好的方法來進行之前的**“檢查”**,我希望得到您的回饋!

假設您沒有安裝任何信號處理程序,您可以通過按 Ctrl-C 將 SIGINT 發送到程序(如果它在前台)。如果它不在前台,您可以使用pkill -INT -f '^php queuefile.php$'.

預設情況下,php將在收到 SIGINT 時退出。

如果由於某種原因安裝了信號處理程序,您也可以嘗試使用TERM信號(預設使用pkill),最終如果找不到合理的信號來殺死程序,則可以使用(暴力和強制)SIGKILL,通過傳遞-TERMtopkill代替-INT.

引用自:https://unix.stackexchange.com/questions/283310