2012-05-02 72 views
0

可以說我有簡單的PHP腳本守護:開始PHP後臺程序從PHP腳本

#!/usr/local/bin/php -q 
<?php 

set_time_limit(0); 

while(1){ 
    //do something here 
    if ($something == "somethingelse"){exit;} 
} 

?> 

我想從另一個PHP腳本運行。什麼是最好的方式來做到這一點? 我一直在使用捲曲對於像這樣:

$url = "url to php daemon file"; 
$ch = curl_init($url); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT, 1); 
curl_setopt($ch,CURLOPT_TIMEOUT, 1); 
$not_important = curl_exec($ch); 
curl_close($ch); 

但是我正在尋找一個更好的主意,如果有一個:)。

+1

對於通過遠程HTTP請求來運行它,您還需要'ignore_user_abort(TRUE)'。默認情況下,Web服務器會在遠程用戶斷開連接時終止正在運行的腳本。您的捲曲版本將運行腳本1秒,然後捲曲將超時並斷開連接,導致您的腳本死亡。 –

+1

確保你這次標記的答案是正確的,也許更多的人會在未來幫助你! –

+0

@MarcB Ignore_user_abort已關閉。但是這個捲曲腳本適合我。 –

回答

3
shell_exec('/foo/bar/myscript.php'); 
+0

不需要'shell_exec('php /foo/bar/myscript.php');'?我不確定它是否可以在所有系統上工作,而不用在前綴「php」 –

+1

@PeteHerbertPenito的前綴,shebang行在那裏,所以這通常會起作用。 – Brad

+1

開始的#!/ usr/local/bin/php -q行告訴它用php來執行這個,所以不需要那個不需要 – Anigel