ホーム

転職ドラフト(次回12/15)

Laravelのmake:commandはどんな時に使うのか?

いつもご利用ありがとうございます。このブログは、広告費によって運営されています。

⇨ Laravel 記事の目次はこちら

Laravel では php artisan コマンドを自作することができます。

自作する方法はこちらの記事で書いています。

⇨Laravel のコマンドに引数を使う方法

これを使うと、果たしてどんなことができるようになるのか?という例について書いていきます

環境

Laravel Framework 8.60.0

目次

  1. 特定の時間に一斉メールを送る
  2. 定期的に計算処理をする
  3. データベースに変更を加えたいが、sql ではなく Laravel の eloquent で書きたい

特定の時間に一斉メールを送る

コマンドをスケジューラーとセットで使うことで、特定の時間に一斉メールを送ることができます

スケジュールを設定する方法は下記の記事で書いています。

やることを分解して考えてみます。

① ユーザーに対してメールを送信する Mail 関数を作成する

② ユーザー全員に対して Mail 関数を発動させるコマンドを作成する

③ スケジュールを組む

上記のように順序だてて作れば特定時間に一斉メールを送ることが可能になります。

(メール送信サービスによって、一斉に送れるメールの数が違います。仕様をよく理解して s 作ります)

定期的に計算処理をする

バッチ処理と言われるものになります。

バッチ処理とは?

バッチ処理は、簡単にいうとまとめて処理をしておくことを指します。

例えば、Youtube のようにとてつもないユーザー数がいるサービスで

「いいねされた数」を動画一覧ページに表示する場合、動画1つ1つに対して計算することは非常に時間がかかります。

なので、動画に紐づく「いいねされた数」を事前に計算しておき、その計算結果をデータベースに保存しておくことによって、

ユーザーが来るたびに計算しなければならなかった処理を、

一度にまとめて事前に処理しておくことによって、その後の計算を楽にすることができます。

この例にあげたバッチ処理の使い方は、ユーザーのページ表示に時間がかかっているときのパフォーマンス改善に効果的です。

バッチ処理で計算されないとデータが更新されないことから、速攻でデータを切り替えたいところには使えないのが注意点になります。

データベースに変更を加えたいが、sql ではなく Laravel の eloquent で書きたい

データベースを仕様に合わせて、変更しなければならないことは多々あります。

そんなとき、sql 文では怖い、難しい、分からないが、Laravel のコードであれば簡単に実装ができそうなことがあります。

そんなときは、コマンドで処理の関数を事前に用意しておき、DB の変更後そのコマンドを打って合わせることが可能です。

マスタテーブルを書き換える時とかでも使えますし、環境・状況に応じてコマンドだと安心してできる時に使えると思います。

データベース変更はいつでも慎重にやりたいところで、できるだけリスク低い選択をしたいところです。

まとめ

以上です。

なんとなくコマンドの使い所についてまとめてみました。

基本はスケジューラーとセットなのかな?と思います。

感想・苦情は TwitterDM にご連絡ください。

それでは!

人気記事

PHP7.4 + Laravel6 のプロジェクトを AWS EC2 にデプロイする

【laravel-breadcrumbs】Laravel でパンくずリストを実装する