2011-09-03 9 views
6

私は、実行するジョブのリストをデータベースに照会し、データベース内のもの(基本的にはプロセス・キュー)に基づいて他のPHPスクリプトを起動するPHPスクリプトを用意しています。PHP shell_execスクリプトが終了するのを待ちますか?

キューランナースクリプトが実行するスクリプトの中には、実行を終了するのに(PDFの生成、イメージのサイズ変更など)30秒かかる場合があります。

問題は、キューランナースクリプト内のshell_exec()が処理スクリプトを呼び出しても、処理が完了するのを待たずにキューが完了しないということです。

キューランナースクリプト:

#!/usr/bin/php 
<?php 
    // Loop through database and find jobs to be done 
    shell_exec(sprintf("/root/scripts/%s.php", $row['jobName'])); 
?> 

ジョブスクリプト:

#!/usr/bin/php 
<?php 
    shell_exec("/usr/bin/htmldoc -t pdf --webpage test.html > test.pdf"); 
    // Update database to mark job as completed 
?> 

は、コマンドラインから直接ジョブスクリプトを実行するには、作品とPDFが作成されます。

これを修正する方法についてのご意見はありますか?または、プロセスキューを実行するためのより良い方法は?

+1

は、いくつかのコードを表示してください –

答えて

7

これを試してみてください:

shell_exec("nohup /usr/bin/htmldoc -t pdf --webpage test.html > test.pdf 2>&1 &"); 
関連する問題