laravelでキューを設定して使用する方法

PHPz
リリース: 2023-04-03 19:20:00
オリジナル
1904 人が閲覧しました

Laravel は、開発者が高品質の Web アプリケーションを迅速に構築できるようにする一連の強力なツールと機能を提供する人気のオープンソース PHP フレームワークです。

Queue は、Laravel フレームワークで非常に重要でよく使用される関数です。これにより、時間のかかるタスクをキューに入れて非同期で実行できるため、Web アプリケーションのパフォーマンスと信頼性が向上します。この記事では、Laravel フレームワークでキューを使用する方法を説明します。

1. Laravel キューの設定

キューの使用を開始する前に、Laravel キューを設定する必要があります。 Laravel 5.1以降では、artisanコマンドを使用してキュー構成ファイルを生成できます。

php artisan queue:table php artisan migrate
ログイン後にコピー

上記のコードは、キュータスクに関する情報を保存するために使用されるジョブデータテーブルを生成します。さらに、Laravel を使用すると、データベース、Redis、Amazon SQS などを含むさまざまなキュードライバーを使用できます。構成ファイルを使用して、必要なキュードライバーを設定できます。例:

'default' => env('QUEUE_DRIVER', 'mysql'), 'connections' => [ 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'queue' => 'default', 'table' => 'jobs', 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'database' => env('DB_DATABASE', 'forge'), 'prefix' => '', ], 'redis' => [ 'driver' => 'redis', 'connection' => 'default', 'queue' => 'default', 'expire' => 60, ], 'sqs' => [ 'driver' => 'sqs', 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'prefix' => env('AWS_SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'), 'queue' => env('AWS_SQS_QUEUE', 'default'), 'region' => env('AWS_REGION', 'us-east-1'), ], ],
ログイン後にコピー

2. キュータスクの作成

Laravel キュー構成を取得したら、キュータスクの作成を開始できます。 Laravel では、すべてのキュータスクはシリアル化可能なクラスである必要があり、Illuminate\Contracts\Queue\ShouldQueue インターフェイスを実装することで定義できます。例:

use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; class SendEmail implements ShouldQueue { use InteractsWithQueue, Queueable, SerializesModels; protected $user; protected $content; /** * Create a new job instance. * * @return void */ public function __construct(User $user, $content) { $this->user = $user; $this->content = $content; } /** * Execute the job. * * @return void */ public function handle() { // 发送邮件给用户 Mail::to($this->user)->send(new WelcomeMail($this->content)); } }
ログイン後にコピー

上記のコードでは、コンストラクターでユーザーと電子メールの内容の文字列を受け入れる SendEmail という名前のキュー タスク クラスを定義します。このクラスは ShouldQueue インターフェイスを実装しているため、Laravel はタスクが現在のリクエストで直接実行されるのではなくキューに追加されるべきであることを認識します。

3. キュー タスクをプッシュする

キュー タスクを作成したら、次のステップはタスクをキューにプッシュすることです。 Laravel では、Queue ファサードを使用してこれを行うことができます。例:

use Illuminate\Support\Facades\Queue; $user = User::find(1); $content = '欢迎加入我们的网站!'; Queue::push(new SendEmail($user, $content));
ログイン後にコピー

上記のコードでは、キュー ファサードを使用して SendEmail タスクをキューにプッシュします。タスクが処理されると、ウェルカム電子メールがユーザーに送信されます。

4. キュー タスクの実行

タスクをキューにプッシュしたので、次の問題はタスクを実行する方法です。 Laravel では、キュータスクの実行は非常に簡単です。次の職人コマンドを実行するだけです:

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

このコマンドは、キューのタスクをリッスンして順番に実行するリスナーを起動します。キュータスクの処理が完了すると、リスナーは自動的に停止します。

この方法でリスナーを開始することに加えて、Laravel はキューのタスクを実行する別の方法、つまりキューのメッセージ サーバーを使用する方法も提供します。たとえば、Redis キュー ドライバーを使用する場合、次のコマンドを使用してキュー メッセージ サーバーを起動できます。

php artisan queue:listen redis
ログイン後にコピー

このコマンドは、Redis キューをリッスンし、キュー タスクを実行するキュー リスナーを起動します。順序。

5. キュータスクの監視

最後に、Laravel はキュータスクの実行を監視する強力なツールのセットも提供します。次のコマンドを使用して、現在のキュー内のタスクを表示できます。

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

このコマンドは、現在のキュー内のすべてのタスクを表示し、タスクの ID、キュー、ステータス、およびその他の情報を提供します。

さらに、Laravel はキューの監視および管理ツールの完全なセットも提供します。 Laravel Horizon または Laravel Telescope を使用してキュー タスクの実行を監視でき、これらのツールはリアルタイムのタスク実行結果、統計情報、完全な例外処理、その他の機能を提供できます。

概要

この時点で、Laravel キューの基本的な使い方をマスターしました。キューを使用すると、特に時間のかかるタスクを実行する必要がある場合に、Web アプリケーションのパフォーマンスと信頼性が大幅に向上します。 Laravel アプリケーションを開発していて、そのパフォーマンスを最適化したい場合、キューの使用は欠かせないツールです。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!