Laravelキューの使い方

PHPz
リリース: 2023-04-12 09:44:19
オリジナル
1092 人が閲覧しました

Laravel は、そのシンプルさ、使いやすさ、そして強力な機能で人気のある非常に人気のある PHP フレームワークです。 Laravel では、キューは開発者が高い同時実行性や大量のデータなどの問題を解決するのに役立つ非常に便利な機能です。この記事では、Laravel キューの基本とその使用方法について説明します。

1. Laravel キューとは

Laravel キューは非同期タスクを処理するためのツールで、タスクをキューに追加し、現在のリクエストに影響を与えることなくバックグラウンドでこれらのタスクを非同期に処理できます。反応時間。キューを使用して、電子メールの送信、画像の処理、PDF の生成など、さまざまなタスクを処理できます。

キューの動作原理は非常に単純です。まずタスクがキューに入れられ、次にバックグラウンド プロセスがこれらのタスクを非同期に実行します。 Laravel のキューは、Redis、RabbitMQ、Beanstalkd などの複数のキュー ドライバーをサポートしています。開発者は、ニーズに応じて適切なキュー ドライバーを選択できます。

2. Laravel キューの使用方法

Laravel キューの使用は非常に簡単で、次の手順に従うだけです:

  1. キュー ドライバーの設定

Laravel でのキュー ドライバーの設定は非常に簡単で、config/queue.php ファイルを開いて、対応するキュー ドライバーを設定するだけです。たとえば、Redis をキュー ドライバーとして使用すると、次のように構成できます。

'connections' => [
    'redis' => [
        'driver' => 'redis',
        'connection' => 'default',
        'queue' => 'default',
        'retry_after' => 90,
        'block_for' => null,
    ],
],
ログイン後にコピー
  1. タスク クラスの作成

タスクを処理するためのクラスの作成は非常に簡単です。ハンドル メソッドを定義するだけで済みます。たとえば、電子メールを送信するためのタスク クラスを作成します。

<?php

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 SendEmail implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    protected $user;

    /**
     * Create a new job instance.
     *
     * @param $user
     */
    public function __construct($user)
    {
        $this->user = $user;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        Mail::to($this->user->email)->send(new Welcome($this->user));
    }
}
ログイン後にコピー
  1. タスクをキューに追加します

タスクをキューに追加するのは非常に簡単です。発送方法。たとえば、コントローラーで次のように使用できます。

use App\Jobs\SendEmail;

public function index()
{
    $user = auth()->user();
    SendEmail::dispatch($user);

    return view('welcome');
}
ログイン後にコピー
  1. キュー プロセスを開始します

タスクがキューに追加された後、キュー プロセスは次のことを行う必要があります。最後に開始されます。キュープロセスを開始するには、Laravel 独自の Artisan コマンドを使用する方法や、スーパーバイザーなどのサードパーティ ツールを使用する方法など、さまざまな方法があります。たとえば、Artisan コマンドを使用してキュー プロセスを開始します。

php artisan queue:work --tries=3 --timeout=30
ログイン後にコピー

上記の手順を通じて、Laravel キューを使用して非同期タスクを処理できます。

3. 一般的に使用される Laravel キュー関数

Laravel キューには、次のような便利な関数が他にもたくさんあります:

  1. 失敗したタスクの処理

タスクの実行が失敗した場合、キューの failed_jobs テーブルを使用して、失敗したタスクを記録できます。同時に、タスクの試行回数とタイムアウトを設定して、タスクが常に失敗するのを防ぐこともできます。

  1. タスクの同時処理

Laravel キューはタスクの同時処理をサポートしており、コマンドラインで複数のプロセスを起動してタスクを同時に処理することで、タスクの処理効率を向上させることができます。

  1. タスクのステータスの監視

サードパーティ ツールである Laravel Horizo​​n を使用すると、タスクのステータス、キューの長さ、その他の情報を簡単に監視できます。時間内に問題を見つけて対処します。

  1. キューのグループ化処理

タスクをグループ化する必要がある場合は、指定したキューにタスクを追加できます。たとえば、上記の SendEmail タスクをメール キューに追加します。

SendEmail::dispatch($user)->onQueue('mail');
ログイン後にコピー

キュー プロセスを開始するときに、どのキューを処理するかを指定できます。

php artisan queue:work --queue=mail
ログイン後にコピー

上記は、基本的な知識と使用法です。 Laravel キューの。 Laravel が開発を続けるにつれて、キューはますます強力になります。この記事を読むことで、誰もがLaravelキューの使い方をより深く理解し、実際の開発に応用できるようになると思います。

以上がLaravelキューの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート