9

実行するジョブのリストをデータベースに照会し、データベースで見つかったもの (基本的にはプロセス キュー) に基づいて他の PHP スクリプトを起動する PHP スクリプトがあります。

キュー ランナー スクリプトが実行するスクリプトの中には、実行が完了するまでに 30 秒程度かかるものがあります (PDF の生成、画像のサイズ変更など)。

問題は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 が作成されます。

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

4

1 に答える 1

12

これを試して:

shell_exec("nohup /usr/bin/htmldoc -t pdf --webpage test.html > test.pdf 2>&1 &");
于 2011-09-04T01:19:41.060 に答える