では Laravel、 Redis Queue 実行時間が長く時間のかかるタスクを、完了を待たずに処理するために使用される強力なツールです。 を使用すると Redis Queue 、電子メールの送信、バックグラウンド タスクの処理、レポートの生成などのタスクをキューに入れて非同期に実行できるため、アプリケーションのパフォーマンスが向上し、ユーザー エクスペリエンスが向上します。
Redis Queue で 使用するための基本的な手順 Laravel
構成、設定 Redis
Redis まず、に インストールして設定する必要があります Laravel。 Redis Composer 経由でパッケージ をインストールし、ファイル Redis に接続パラメータを設定していることを確認してください .env
。
CACHE_DRIVER=redis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
ジョブの定義
次に、キューに入れるジョブを定義する必要があります。 これらのジョブは、アプリケーションのメイン処理とは独立して非同期に実行されます。
// Example defining a job to send an email
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;
use Illuminate\Support\Facades\Mail;
class SendEmailJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $user;
public function __construct($user)
{
$this->user = $user;
}
public function handle()
{
// Handle sending an email to the user
Mail::to($this->user->email)->send(new WelcomeEmail());
}
}
ジョブをキューに入れる
ジョブを実行する場合は、 dispatch
または dispatchNow
関数を使用してジョブをキューに追加するだけです。
use App\Jobs\SendEmailJob;
use Illuminate\Support\Facades\Queue;
// Put the job into the queue and perform asynchronously
Queue::push(new SendEmailJob($user));
// Put the job into the queue and perform synchronously(without waiting)
Queue::push(new SendEmailJob($user))->dispatchNow();
キューからジョブを処理する
Worker ジョブがキューに追加された後、キュー内のジョブを実行するように を 設定する必要があります。 を実行するための Laravel が付属しています: artisan command worker
php artisan queue:work
は worker キュー内のジョブを継続的にリッスンして実行します。 worker ジョブの数と処理ラウンド間の待機時間を処理するように を 設定できます。
キュー内のジョブを管理する
Laravel は、キュー内のジョブを監視および制御できる管理インターフェイスを提供します。 保留中のジョブの数、処理時間を表示し、失敗したジョブを再試行することもできます。
結論 Redis Queue in を使用することは、 Laravel アプリケーションのメイン処理を中断することなく、長時間実行されるタスクを処理する効率的な方法です。 を使用すると Redis Queue 、アプリケーションのパフォーマンスが向上し、ユーザー エクスペリエンスが向上します。