実行するジョブのリストをデータベースに照会し、データベースで見つかったもの (基本的にはプロセス キュー) に基づいて他の 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 が作成されます。
これを修正する方法についてのアイデアはありますか? または、プロセス キューを実行するためのより良い方法はありますか?