2011-06-21 12 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

あなたが望むものを達成するための2つの一般的な方法があります。

いずれもデータベースにテーブルを作成することです(タスクリストの種類)。あなたのフロントエンドは、そこで行う作業を保存します。

最初の1つはですが、少し遅れても問題ありません。まずsymfonyタスクを作成します。それが起きると(毎分10分30秒)何かがあればテーブルをチェックし、そうでなければ存在するだけです。それ以外の場合は、必要な処理を行い、処理済としてマークします。

第2のは、より多くの仕事があり、エラーを起こしやすいですが、すぐに動作することができます。起動時にデーモンを生成するタスク(フォーク、フォーク、親pidをゼロに設定)を作成し、スリープ状態になります。あなたがするべき仕事がある場合は、信号を送信して目を覚ます。 phpのpcntl_ *関数でデーモンやシグナルの送受信を行うことができます。

関連する問題