Laravelのmake:commandはどんな時に使うのか?
いつもご利用ありがとうございます。
この記事には広告が掲載されており、その広告費によって運営しています。
Laravel では php artisan コマンドを自作することができます。
自作する方法はこちらの記事で書いています。
これを使うと、果たしてどんな ことができるようになるのか?という例について書いていきます
環境
Laravel Framework 8.60.0
特定の時間に一斉メールを送る
コマンドをスケジューラーとセットで使うことで、特定の時間に一斉メールを送ることができます
スケジュールを設定する方法は下記の記事で書いています。
やることを分解して考えてみます。
① ユーザーに対してメールを送信する Mail 関数を作成する
② ユーザー全員に対して Mail 関数を発動させるコマンドを作成する
③ スケジュールを組む
上記のように順序だてて作れば特定時間に一斉メールを送ることが可能になります。
(メール送信サービスによって、一斉に送れるメールの数が違います。仕様をよく理解して s 作ります)
定期的に計算処理をする
バッチ処理と言われるものになります。
バッチ処理とは?
バッチ処理は、簡単にいうとまとめて処理をしておくことを指します。
例えば、Youtube のようにとてつもないユーザー数がいるサービスで
「いいねされた数」を動画一覧ページに表示する場合、動画1つ1つに対して計算することは非常に時間がかかります。
なので、動画に紐づく「いいねされた数」を事前に計算しておき、その計算結果をデータベースに保存しておくことによって、
ユーザーが来るたびに計算しなければならなかった処理を、
一度にまとめて事前に処理しておくことによって、その後の計算を楽にすることができます。
この例にあげたバッチ処理の使い方は、ユーザーのページ表示に時間がかかっているときのパフォーマンス改善に効果的です。
バッチ処理で計算されないとデータが更新されないことから、速攻でデータを切り替えたいところには使えないのが注意点になります。
データベースに変更を加えたいが、sql ではなく Laravel の eloquent で書きたい
データベースを仕様に合わせて、変更しなければならないことは多々あります。
そんなとき、sql 文では怖い、難しい、分からないが、Laravel のコードであれば簡単に実装ができそうなことがあります。
そんなときは、コマンドで処理の関数を事前に用意しておき、DB の変更後そのコマンドを打って合わせることが可能です。
マスタテーブルを書き換える時とかでも使えますし、環境・状況に応じてコマンドだと安心してできる時に使えると思います。
データベース変更はいつでも慎重にやりたいところで、できるだけリスク低い選択をしたいところです。
まとめ
以上です。
なんとなくコマンドの使い所についてまとめてみました。
基本はスケジューラーとセットなのかな?と思います。
感想・苦情は TwitterDM にご連絡ください。
それでは!
人気記事