2014-07-17 62 views
0

我目前有2個php cli腳本在我的服務器上運行在後臺。我希望能夠允許第三個腳本殺死一個(或兩個)腳本並重新啓動它們。我目前的方法涉及創建一個shell腳本:執行2個php-cli腳本並允許它們被第三個腳本停止/啓動

#!/bin/bash 
nohup php script1.php & 
nohup php script2.php & 

當我需要重新啓動它們,我運行PS和手動殺了他們,並重新運行shell腳本。

有沒有一種方法可以在需要時從第三個php腳本啓動/重新啓動這些腳本?我會想象它會涉及到將pid錄製到一個文件中,並讓第三個腳本讀取pid並從那裏殺死它們,但我不知道如何去做。

+0

類似於:http://www.bram.us/2013/11/11/run-a-php-script-as-a-servicedaemon-using-start-stop-daemon/ –

回答

0

找出解決方案。我創建了幾個功能在我的第三腳本「開始」和「重啓」的另外兩個PHP腳本是這樣的:

function launchscripts() { 
    global $pid1, $pid2; 
    $cmd1 = "/usr/bin/php /home/of/the/script1.php"; 
    $pid1 = exec("nohup $cmd1 > /dev/null 2>&1 & echo $!"); 
    $cmd2 = "/usr/bin/php /home/of/the/script2.php"; 
    $pid2 = exec("nohup $cmd2 > /dev/null 2>&1 & echo $!"); 
    return true; 
} 

function restartscripts() { 
    global $pid1, $pid2; 
    exec("kill $pid1"); 
    exec("kill $pid2"); 
    launchscripts(); 
    return true; 
} 

有這樣做的可能是更好的方法,但我不是很好與PHP。這似乎工作,所以我會堅持下去。

以前我沒有提到過的一件事我認爲可能很重要,因爲我的第三個腳本會在其他兩個腳本不斷運行時,這就是爲什麼全局變量可以用於此目的。