0
1

はじめに

こんにちは、Webエンジニアの岩田史門(@SI_Monxy)です!
今回はLaravelのジョブとキューを使った非同期処理の実装について記事を書いてみました!
改善点や修正点があれば、コメントにて優しくご指導いただけると嬉しいです!

概要

Laravelはジョブとキューを利用することで、非同期処理を簡単に実装することができます。このガイドでは、ジョブとキューの基本的な概念から、具体的な実装方法、そして実際のサンプルコードまでを紹介します。

ジョブとキューの概要

ジョブとキューは、バックグラウンドで実行する処理を管理するための仕組みです。ジョブは特定のタスクを定義するクラスであり、キューはこれらのジョブを順次実行するための仕組みです。

ジョブ (Job): 実行するタスクを定義するクラス。

キュー (Queue): ジョブを管理し、バックグラウンドで実行するためのシステム。
非同期処理を利用することで、ウェブアプリケーションのレスポンスを高速化し、ユーザー体験を向上させることができます。

Laravelプロジェクトのセットアップ

まず、Laravelプロジェクトを新規に作成します。

composer create-project --prefer-dist laravel/laravel queue-example
cd queue-example

次に、データベースの接続設定を.envファイルに記載します。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=queue_example
DB_USERNAME=root
DB_PASSWORD=

ジョブの作成

ジョブを作成するには、make:jobコマンドを使用します。

php artisan make:job ExampleJob

作成されたapp/Jobs/ExampleJob.phpを開き、handleメソッドに実行したいタスクを記述します。

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;

class ExampleJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    public function __construct()
    {
        // コンストラクタで必要なデータを渡すことができます
    }

    public function handle()
    {
        // ジョブの具体的な処理をここに記述します
        \Log::info('ExampleJob is being processed');
    }
}

キューの設定

次に、キューの設定を行います。Laravelは複数のキュー接続をサポートしていますが、ここではデフォルトのデータベースキューを使用します。

まず、キューのテーブルをマイグレーションします。

php artisan queue:table
php artisan migrate

次に、.envファイルでキューの接続設定を行います。

QUEUE_CONNECTION=database

キューの使用例

ジョブをキューに投入する方法は以下の通りです。例えば、コントローラーからジョブをディスパッチします。

namespace App\Http\Controllers;

use App\Jobs\ExampleJob;
use Illuminate\Http\Request;

class JobController extends Controller
{
    public function dispatchJob()
    {
        ExampleJob::dispatch();
        return response()->json(['message' => 'Job dispatched']);
    }
}

キューの監視と管理

キューを処理するワーカーを起動するには、以下のコマンドを実行します。

php artisan queue:work

このコマンドを実行することで、キューに投入されたジョブが順次実行されます。

キューの監視や管理にはhorizonパッケージを利用することもできます。horizonはキューのモニタリングや管理機能を提供します。

composer require laravel/horizon
php artisan horizon:install
php artisan migrate
php artisan horizon

参考URL

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1