PHP Laravel プログラミング

Laravelでランキング集計を定期的に実行する方法

更新日:

Laravelでランキング集計を定期的に実行する方法

プロミディア合同会社の斉藤です。

Webサイトによくあるランキング機能ですが、あれはランキング画面を開いた時に計算しているのではありません。

Webサーバ側で決めた一定の周期でランキング計算をし、その結果をランキングテーブルに格納し、ランキング画面ではそのデータを表示させています。

今回はLaravelでランキング集計処理を定期的に実行する方法について解説していきます。

集計処理の全体像

集計処理の実装は大きく分けて3つの工程を行います。

・定期的に実行させる設定の追加

・Laravelプロジェクト内でのスケジュール定義

・ランキング集計処理の実装

 

定期的に実行させる設定の追加

定期的に処理を実行させるにはWebサーバ側にもクーロンの設定が必要となります。

クーロン設定を開く

Cronエントリを追加する

参考:Laravel 5.5 タスクスケジュール

 

Laravelプロジェクト内でのスケジュール定義

Kernelクラスのscheduleメソッド内に定期実行したい処理を記述します。

今回は自分で作成したランキング集計用クラス(DaySummary)のrunSummaryメソッドを呼び出すように書きました。

App/Console/Kernel.php

daily()を指定すると「毎日深夜12時」に実行します。

毎日の実行時間を指定したい場合は「->dailyAt('13:00');」のようにして、任意の時刻に設定することもできます。

また、時刻指定の他に

毎分→「->everyMinute();

30分毎→「->everyThirtyMinutes();

といった指定方法も用意されています。

 

ランキング集計処理の実装

集計処理自体はそれ用のクラスに記述します。

集計処理ではいつ呼ばれたかは意識せず、呼ばれたら常に集計の仕様に沿って処理を行わせます。

※現状は呼ばれたら1行登録するだけの実装です。まだ集計処理のロジックにはしていません。

app/Bat以下にDaySummaryクラスを作成しました。

 

まとめ

Laravelでは定期実行の仕組みも用意されています。

最初にCrontabに1行設定してしまえば、あとはWebアプリ側で柔軟な設定が可能ですので、今回のやり方を参考にしてみてください。

【セミナー情報】

  • この記事を書いた人
  • 最新記事

斉藤 貞義

プロミディア合同会社代表。 北海道札幌市在住。 会社員としてソフトウェア開発を約13年経験後、PE-BANK所属のフリーランスエンジニアとして独立。 その2年半後に法人成りし、合同会社を設立。 現在は企業に常駐してソフトウェア開発をしつつ、収益を目的としてWebサイト作成、セミナーを開催している。

-PHP Laravel, プログラミング

Copyright© プロミディア合同会社 , 2020 All Rights Reserved.