2011-06-21 59 views
0
$path=sfConfig::get('sf_app_module_dir')."/module/actions/MultiTheading.php"; 
foreach($arr as $id) 
{ 
    if($id) 
     passthru ("php -q $path $id $pid &"); 
} 

當我運行操作腳本儘管「&」按順序運行。如何在操作的背景中正確運行Symfony任務?

請幫忙

+0

你想做什麼? MultiTheading.php的內容是什麼? – Gerry

+0

正確運行後臺任務需要創建一個守護進程併發信號通知它。將任務設置爲每x分鐘運行一次會更容易,檢查是否有工作要做,如果沒有則結束。 – Maerlyn

+0

你能告訴....如何並行運行腳本? – user746709

回答

1

有兩種常見的方法可以實現你想要的。

兩者都涉及到在您的數據庫中創建一個表(待辦事項列表)。你的前端節省了工作。

第一個比較容易,但如果您不介意有輕微的延遲,那就沒關係。你首先創建一個symfony任務。當它醒來時(每10/30 /分鐘),檢查該表是否有任何事情要做,如果沒有,就直接存在。否則它會做它需要的,然後將它們標記爲已處理。

第二個是更多的工作和更容易出錯,但可以立即工作。你創建一個任務,它在啓動時守護自身(叉子,再次分叉,並將父pid設置爲零),然後進入睡眠狀態。如果你有一些工作要做,你可以通過發送信號來喚醒它。守護進程和信號發送/接收可以使用php的pcntl_ *函數完成。