BackEnd

Laravelのバッチ処理を作る

投稿日:

はじめに

こんにちは。webアプリにつきもののバッチ処理ですが、もちろんLaravelでもサポートされていて、crontabに書き散らすことなくバッチを設定できます。
今回はLaravelでコンソールやcronから処理を呼び出し、バッチとして実行する方法を紹介します。

環境

  • PHP 7.3.3
  • Laravel 5.8.21

artisanコマンド作成

以下のコマンドで、Artisanコマンドを自作します。ここで作成するコマンドは php artisan でCUIから実行できますし、今回のテーマであるバッチ処理でも呼び出すことができます。

これで app/Console/Commands に TestBatch.php が作成されます。

これでもうartisanコマンドから呼び出せるようになっています。確認してみましょう。

このように表示されればOKです。 php artisan batch:test をコンソールから実行することで、先ほどの TestBatch クラスの handle メソッドが呼び出されます。

artisanコマンドをバッチとして登録する

コンソールからartisanコマンドとして呼び出せるようになりました。同じ要領でartisanコマンドを必要なだけ作り、全てcrontabに登録してもよいのですが、バッチが増えるほど煩雑になり、管理しづらくなります。
Laravel内に全てのコマンドを登録し、見通しよく管理できるようにしましょう。 app/Console/Kernel.php を編集します。

上記の sendOutputTo や hourly 以外にも様々な制御が可能です。公式ドキュメントで網羅されていますので、是非見てみてください。
あとはcrontabに1行追加するだけで、 Kernel.php に登録したコマンドがそれぞれ実行されるようになります。

これで完了です。
※ 今回初めてAlpine Linuxのcrontabを触りましたが、Redhat系のcrontabと比べてコメントが親切ですね…

さいごに

以前はcrontabをテキストファイルとしてリポジトリに登録したり、もしくはサーバ上のcrontabを直接編集したりすることが私はほとんどでした。こうやってコード上で管理でき、分かりやすく制御できるのは素晴らしいですね。

おすすめ書籍

PHPフレームワーク Laravel Webアプリケーション開発 バージョン5.5 LTS対応 PHPフレームワーク Laravel入門

blog-page_footer_336




blog-page_footer_336




-BackEnd
-,

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

CAPTCHA


関連記事

Go言語

Go 1.16でのgo getとgo installの変更点

はじめに Go 1.16から、go getとgo installの役割が明確に分かれました。今回は、Go 1.16からこれらのコマンドがどのように変わったかを紹介します。 go getとgo inst ...

Go言語

sqlcを使ってSQLファイルからGoのコードを生成する

はじめに Goでデータベースにアクセスする場合、様々なやり方(ORMを使う、クエリを直接書いて実行する等)がありますが、それぞれ良さと辛みがあると思います。 個人的には、RailsのActiveRec ...

Pythonコードが育っても品質を維持するツールを考える[Ruff Pyright]

はじめに Pythonでアプリケーション開発をするとなると、ちょっとしたPythonスクリプトを書くのとは違った難しさがあります。素のPythonは、スクリプト言語らしい自由さを持っていますが、その状 ...

laravel logo

Laravel SailでDocker環境構築

はじめに Laravel Sailは、2020年末に正式版となった、Laravel公式のローカルDocker環境と、Docker環境を便利に使用できるコマンド群です。Laravel公式ドキュメントでも ...

Go言語

goroutineとchannelとContext

はじめに 最近、Goを本格的に勉強しており、並行処理として使用機会も多く自分なりに理解が追いついていない goroutine と channel について勉強していきたいと思います。 並行処理と並列処 ...

フォロー

blog-page_side_responsive

2019年6月
日 月 火 水 木 金 土
 1
2345678
9101112131415
16171819202122
23242526272829
30  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。