質問: 具体的なコードが知りたいというよりかは、我流でプログラミングしていることもあり、自分の考えた方法がスマートなものなのか、他に良い方法があるかお聞きしたいと思っています。 Laravel 5.8、MAMPを使って開発を行なっています。 その中に、大量のデータをサーバとやりとりするため、一度の処理に數十分から数時間程度かかる処理があります。 このまま実行するとタイムアウトになってしまうので、時間がかかる部分の処理を別のphpファイル(longtime_process.php)へと移行し、 ``` exec(nohup php longtime_process.php >/dev/null 2>&1); ``` のように呼び出そうと思っています。 ただしこの方法だと、2つの疑問があります。 ・処理を分けたphp(longtime_process.php)をどのフォルダに置いたら分かりやすいか appフォルダ直下などにおけば良いのかと思うのですが、そういった形でよろしいと思われるでしょうか。 ・変数をlongtime_process.phpに渡したいので、argvを使う phpの変数をコマンドライン引数で渡して、再びphpの変数として使うのはコードがスマートではないような気がしています。 現状としてはexecでnohupを利用する方法を取ろうと思うのですが、Laravelの機能を使ったり、または別のスマートな方法があればお聞きしたいと思います。 PHP、Laravelについても経験が浅く、見当違いなことを申し上げていれば大変恐縮ですが、よろしくお願いいたします。
回答: 私もあまり使ったことがない機能なので詳しいわけではないですが、 ジョブキューが有用には思います。 * Laravel 5.8 キュー > > キューによりメール送信のような時間を費やす処理を遅らせることが可能です。時間のかかるタスクを遅らせることで、よりアプリケーションのリクエストをドラマチックにスピードアップできます。 > > >