検索
ホームページバックエンド開発PHPチュートリアルLaravelフレームワークでのQueue機能の使い方

Laravel フレームワークでキュー (Queue) 関数を使用する方法

はじめに:
Queue (キュー) は、Web 開発で重要な役割を果たす一般的な非同期処理メカニズムです。 Laravel フレームワークは、電子メールの送信、レポートの生成、ビッグデータの処理など、さまざまなバックグラウンド タスクを簡単に処理できる強力なキュー機能を提供します。この記事では、キューの設定、タスクの定義と実行など、Laravel フレームワークでのキュー機能の使用方法と、対応するコード例を紹介します。

1. キューの設定

Laravel フレームワークでは、キューの設定は非常に簡単です。まず、構成ファイル config/queue.php で、キュー ドライバー (キュー ドライバー) と対応する接続​​パラメーターを設定できます。 Laravel は、データベース、Redis、Beanstalkd などを含むさまざまなキュードライバーをサポートしています。ここでは例としてデータベースドライバーを使用します。

'connections' => [
    'database' => [
        'driver' => 'database',
        'table' => 'jobs',
        'queue' => 'default',
        'retry_after' => 90,
    ],
],

上記の構成では、driver はキュー ドライバーをデータベース ドライバーとして指定し、table はキュー タスクを保存するためのデータ テーブルの名前を指定します。 queue はデフォルトのキューの名前を指定し、retry_after はタスク実行失敗後の再試行時間を指定します。

2. タスクの定義

Laravel フレームワークでは、キュー タスク (ジョブ) はクラスの形式で定義され、通常は

app/Jobs ディレクトリに保存されます。電子メールを送信するための単純なキュー タスクを作成してみましょう。

まず、Artisan コマンドを使用してキュー タスク テンプレートを生成します。

php artisan make:job SendEmailJob

生成が成功すると、

SendEmailJob# という名前のファイルが app/Jobs# に生成されます。 ## ディレクトリ ## クラス ファイル。このクラス ファイルを開くと、次のコードが表示されます。

namespace AppJobs;

use IlluminateBusQueueable;
use IlluminateContractsQueueShouldQueue;
use IlluminateFoundationBusDispatchable;
use IlluminateQueueInteractsWithQueue;
use IlluminateQueueSerializesModels;

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

    public function __construct()
    {
        //
    }

    public function handle()
    {
        // 发送邮件的逻辑代码
    }
}
このクラスでは、電子メールを送信するためのロジック コードを定義できます。キュータスクは非同期で実行されるため、ShouldQueue

インターフェースをクラスとして実装する必要があることに注意してください。同時に、他の特性

DispatchableInteractsWithQueueQueueableSerializesModels は、キュー操作とオブジェクトのシリアル化のサポートを提供します。 3. タスクのエンキュー

Laravel フレームワークでは、タスクのエンキューは通常、

dispatch

関数を呼び出すことによって実装されます。以下は、

SendEmailJob タスクをキューに入れるサンプル コードです。

use AppJobsSendEmailJob;

dispatch(new SendEmailJob());
上記のコードは、SendEmailJob

タスクをデフォルト キューに追加します。キュー名を指定する必要がある場合は、

onQueue メソッドを使用できます。

use AppJobsSendEmailJob;

dispatch((new SendEmailJob())->onQueue('emails'));
さらに、タスクを遅延させたい場合は、lay# メソッドを使用できます。 ## メソッド:

use AppJobsSendEmailJob;

$job = (new SendEmailJob())->delay(Carbon::now()->addMinutes(10));

dispatch($job);

4. キュータスクの実行Laravel フレームワークでは、同期実行と非同期実行の 2 つのメソッドを使用してキュータスクを実行できます。

同期実行 (同期ドライバー)

    同期実行とは、タスクがキュー ドライバーによって処理されずに、現在のリクエスト内で直ちに実行されることを意味します。構成ファイル
  1. config/queue.php
  2. で、デフォルトのキュードライバーを「sync」に設定します。
'default' => env('QUEUE_DRIVER', 'sync'),

現時点では、dispatch 関数を呼び出してタスクをキューに追加した後、タスクは現在のリクエストですぐに実行されます。

非同期実行

    非同期実行とは、タスクがキュー ドライバーによって処理および実行されることを意味します。構成ファイル
  1. config/queue.php
  2. で、デフォルトのキュー ドライブを「データベース」などの別のドライブに設定します。
'default' => env('QUEUE_DRIVER', 'database'),

次に、ターミナルで次のコマンドを実行してキュー タスクを監視および実行します。 <pre class='brush:php;toolbar:false;'>php artisan queue:work</pre>この時点では、

dispatch を呼び出してタスクがキューに追加された後、

関数を使用すると、タスクがキューに追加され、

queue:work

コマンドによって監視および実行されます。 概要: 上記の手順を通じて、Laravel フレームワークのキュー関数を使用することができ、電子メールを送信するタスクを例として、対応するコード例を示します。キュー機能により、バックグラウンド タスクの処理が向上し、システムの同時実行性と応答速度が向上します。実際の開発では、他の機能やサードパーティのサービスと組み合わせて、より強力な機能を実現することもできます。この記事が、読者が Laravel フレームワークのキュー機能を理解し、適用するのに役立つことを願っています。

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

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
絶対的なセッションタイムアウトとアイドルセッションのタイムアウトの違いは何ですか?絶対的なセッションタイムアウトとアイドルセッションのタイムアウトの違いは何ですか?May 03, 2025 am 12:21 AM

絶対セッションのタイムアウトはセッションの作成時に開始され、アイドルセッションタイムアウトはユーザーの操作なしに開始されます。絶対セッションタイムアウトは、金融アプリケーションなど、セッションライフサイクルの厳格な制御が必要なシナリオに適しています。アイドルセッションタイムアウトは、ソーシャルメディアなど、ユーザーが長い間セッションをアクティブに保つことを望んでいるアプリケーションに適しています。

セッションがサーバーで機能していない場合、どのような措置を講じますか?セッションがサーバーで機能していない場合、どのような措置を講じますか?May 03, 2025 am 12:19 AM

サーバーセッションの障害は、手順に従って解決できます。1。セッションが正しく設定されていることを確認するために、サーバーの構成を確認します。 2.クライアントCookieを確認し、ブラウザがそれをサポートしていることを確認し、正しく送信します。 3. Redisなどのセッションストレージサービスを確認して、それらが正常に動作していることを確認します。 4.アプリケーションコードを確認して、正しいセッションロジックを確認します。これらの手順を通じて、会話の問題を効果的に診断および修復し、ユーザーエクスペリエンスを改善することができます。

session_start()関数の重要性は何ですか?session_start()関数の重要性は何ですか?May 03, 2025 am 12:18 AM

session_start()iscrucialinphpformangingusersions.1)itInitiateSanewsessionifnoneExists、2)resumesanexistingsession、および3)SetSessionCookieforcontinuityAcrossRequests、ApplicationslicationSliviseSlikeUserauthicationAnticatent。

セッションクッキーにHTTPonlyフラグを設定することの重要性は何ですか?セッションクッキーにHTTPonlyフラグを設定することの重要性は何ですか?May 03, 2025 am 12:10 AM

HTTPonlyフラグを設定することは、XSS攻撃を効果的に防止し、ユーザーセッション情報を保護することができるため、セッションCookieにとって重要です。具体的には、1)HTTPONLYフラグは、JavaScriptがCookieにアクセスするのを防ぎます。2)Flagは、PHPとFlaskのSetCookiesとMake_Responseを介して設定できます。

PHPセッションはWeb開発でどのような問題を解決しますか?PHPセッションはWeb開発でどのような問題を解決しますか?May 03, 2025 am 12:02 AM

phpsessionssolvetheprobrof of maintainsea crossmultiplehttprequestsbyStoringdataontaonsociatingitiTauniquesessionid.1)それらは、通常はヨーロッパの側面、および一般的には、測定されている

どのデータをPHPセッションに保存できますか?どのデータをPHPセッションに保存できますか?May 02, 2025 am 12:17 AM

phpssionscanStorestrings、numbers、arrays、andobjects.1.strings:textdatalikeusernames.2.numbers:integersorfloatsforcounters.3.arrays:listslikeshoppingcarts.4.objects:complextructuresthataresialized。

どのようにPHPセッションを開始しますか?どのようにPHPセッションを開始しますか?May 02, 2025 am 12:16 AM

tostartaphpsession、outsession_start()atthescript'sbeginning.1)placeitbe foreanyouttosetthesscookie.2)usesionsionsionsionserdatalikelogintatussorshoppingcarts.3)再生セッションインドストップレベントフィックスアタック

セッションの再生とは何ですか?また、セキュリティをどのように改善しますか?セッションの再生とは何ですか?また、セキュリティをどのように改善しますか?May 02, 2025 am 12:15 AM

セッション再生とは、新しいセッションIDを生成し、セッション固定攻撃の場合にユーザーが機密操作を実行するときに古いIDを無効にすることを指します。実装の手順には次のものが含まれます。1。感度操作を検出、2。新しいセッションIDを生成する、3。古いセッションIDを破壊し、4。ユーザー側のセッション情報を更新します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール