2016-05-15 74 views
0

我目前正在按照教程教導如何在php中創建一個隊列。一個無限循環是在一個PHP腳本中創建的。我簡化的代碼,以便將重點放在問題手頭:停止從Linux腳本中運行的PHP腳本的infinit循環

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

我用putty(與SSH連接)連接到Linux終端在我的共享託管帳戶(godaddy的)。如果我運行php queuefile.php,我知道它會毫無問題地運行(已使用有限的代碼循環而不是無限的而代碼循環)測試代碼。

問題:一旦啓動後我怎麼能退出無限循環?我已經在網上閱讀創建代碼的選項,「檢查」是否應該繼續的東西,如下面的代碼循環:

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

雖然我很好奇,如果有可能是一個命令,我可以鍵入終端或我可以推送的一組密鑰將導致腳本終止。如果有任何方法終止腳本,或者如果有更好的方法來使之前的「檢查」,我會愛你的反饋!

+0

我以前使用的是Linux機器上的插槽運行聊天服務器。 您可以使用屏幕在「屏幕」中託管應用程序,如果您想退出,您可以簡單地打開該屏幕並使用控制+ c –

回答

2

按Ctrl +Ç應該停止在前臺運行正在運行的程序。

當你在另一個會話中登錄時,你也可以殺掉它,做一些ps aux | grep my-php-script.php,看看它是否是你的程序,然後你可以使用pkill -f my-php-script.php殺死這個過程。

+0

就像魅力一樣工作,謝謝!哦,你提到,如果我登錄另一個會話。如果我已經有一些在後臺工作了,可以像你說的那樣殺死它:'pkill -f queuefile.php'?還是隻有工作如果我在同一個會話中調用PHP腳本? – Webeng

+0

@Webeng它將在另一個會話中工作,你只需要在同一臺機器上,這就是全部。 –

+0

真棒,感謝您的反饋 – Webeng

0

我明白你的意思,你想在你的服務器上做cron。因此,您應該通過putty登錄您的服務器並創建cron作業。 例如: 登錄後...

crontab -e 

然後加入

1 2 3 4 5 /path/to/command arg1 arg2