LaravelでのQueueの使用
Laravel Queue Service は、さまざまなバックグラウンド キューに統合された API を提供します。この記事では、Laravel で Queue を使用するための最も基本的な操作チュートリアルを中心に、サンプル コードを通じて詳しく紹介します。お役に立てれば幸いです。
前書き
laravelのキューサービスは他のキューサービスと何ら変わりはなく、人間の思考に最も沿った最も単純で一般的なプロセスです。キュー情報を保存する場所があり、 PHP プロセスが実行中である タスクが書き込まれ、別の PHP デーモンがキュー情報をポーリングし、実行要件を満たすタスクが実行されて削除されます。 PHP は URL 駆動の同期言語であり、本質的にブロックするため、Laravel がキュー情報をクエリして実行するためのデーモン ツールを提供することは驚くことではありません。
ここ 2 日間で Laravel のキューに触れるのは初めてで、かなり時間がかかりました。 。 。苦労したのに、まだ Laravel の使い方がよくわからないと感じています。ドキュメントは比較的シンプルでまとめられており、ソースコードを読むのは少し難しいです (ただし、ソースコードを読んで、ゆっくりデバッグして検証します)。今でも最も信頼できるものです)。
以下は、キューの最も基本的な操作のみを使用する私の簡単なデモです。より高度な操作にはさらに時間がかかります:)
Laravel キューを使い始めるのが難しい私のような学生は、それを共有できます。
構成
Redisパッケージを追加します
composer.jsonのrequireセクションに「predis/predis」: "~1.0"を追加し、composerを起動して更新します。
database.php
database.php設定ファイルにredisデータベース部分を設定します。デフォルトでデフォルトの接続があります。これを使用してください:)
このデフォルトの接続に必要な設定項目に従って編集します。 .env 構成ファイルで、REDIS_HOST、REDIS_PASSWORD、および REDIS_PORT に、独自のサーバーの Redis の対応する値を入力します。
queue.php
まず、.env で QUEUE_DRIVER を構成する必要があります。今は Redis を使用する予定なので、それを Redis に構成します。
次に、queue.php の接続セクションで redis 接続を構成します。ここで、connection の対応する値は、database.php の redis のデフォルト接続です。
タスククラス
次のステップは、実際の操作クラスを記述することです。Laravel は、タスククラスの作成を簡素化するための職人コマンドを提供します。
php artisan make:job Demo
ジョブディレクトリがアプリディレクトリに生成されます。すでに Demo.php Task クラスがあります。
Lumen にはこの職人コマンドはありませんが、デフォルトでは ExampleJob.php がすでに書かれているので、それをコピーして名前を変更するだけです。
まず、ハンドル メソッドで簡単なログ出力テストを作成します。
Log::info('Hello, queue');
タスクの発行
次に、タスクをキューにプッシュするエントリ関数を作成します。補助関数dispatch()を使用します:
Laravelで次のメソッドを使用します:
Demo::dispatch();
Lumenで次のメソッドを使用します:
dispatch(new Demo);
キューを開きます
すべてがうまくいけば、これが最後のステップです。コマンドラインで実行します:
php artisan queue:listen --queue=default
キューを監視し、次のような簡単な実行ステータスを出力します:
[2017-11-07 02:12:47] Processing: App\Jobs\Demo [2017-11-07 02:12:47] Processed: App\Jobs\Demo
問題がない場合は、このキュー スクリプトをバックグラウンドで実行させることができます:
php artisan queue:work --daemon --quiet --queue=default 1>> /dev/null 2>&1
高度な実行: )
キューにプッシュするとき、通常はパラメーターを渡す必要がありますが、ここでどのように渡すのでしょうか?
パラメータの送信
$param = 'Stephen'; Demo::dispatch($param);lumenは次の方法を使用します:
$param = 'Stephen'; dispatch(new Demo($param));
受信
タスククラスでパラメータを受け取る方法は以下の通りです:
protected $param; /** * Create a new job instance. * * @return void */ public function __construct($param) { $this->param = $param; } /** * Execute the job. * * @return void */ public function handle() { Log::info('Hello, ' . $this->param); }
今回は初めての試みですが、遅延配信、エラー処理、優先度、障害処理など、高度な使い方がたくさんあります。今後も書き続けます:) マルチキュー
これは考慮する必要がある問題です。デフォルトと呼ばれるキューにすべてのタスクを入れることは不可能です。キューを管理します。
別のキューを指定するには、dispatch() の直後に onQueue() メソッドを実行するだけです。当然のことですが、queue.php 設定ファイル内の redis 設定キューがデフォルトから {default} に変更されます。これにより、キューの名前がランタイムから動的に取得できるようになります。ハードコーディングされています。
Lumen フレームワークを使用している場合、直接記述するとエラーが発生します: 文字列のメンバー関数 onQueue() を呼び出します。
その理由は、Lumen の Job 基本クラスが IlluminateFoundationBusDispatchable トレイトを使用せず、IlluminateBusQueueable の onQueue() メソッドを直接使用しているためです。
これで、Job クラスが IlluminateBusQueueable トレイトを使用していることが明らかになったため、Job クラスでこの onQueue() メソッドを呼び出す必要があります。
えーキューを開くとき:
php artisan queue:work --queue=emails
这里指定的队列名 emails 和 dispatch 时指定的队列名保持一致即可。
相关推荐:
以上がLaravelでのQueueの使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

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

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

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

紹介テーブルを作成して、紹介、紹介、推奨コード、使用時間を含む推奨関係を記録します。 2.推奨データを管理するために、ユーザーモデルのBelongStomanyとHasmanyの関係を定義します。 3.登録時に一意の推奨コードを生成します(モデルイベントを通じて実装できます)。 4.登録中にパラメーターをクエリすることにより、推奨コードをキャプチャし、検証後に推奨関係を確立し、自己称賛を防ぎます。 5.推奨されるユーザーが指定された動作(サブスクリプション順序)を完了した場合、報酬メカニズムをトリガーします。 6.共有可能な推奨リンクを生成し、Laravel Signature URLを使用してセキュリティを強化します。 7.推奨事項の総数や変換された番号など、ダッシュボードに推奨統計を表示します。データベースの制約、セッション、またはCookieが持続することを確認する必要があります。

Accessors andMutatorsin andlaravel'seloquentormallowyoutoformatormatulatemodelattributestributestributestributes.1.useaccessorstocustomizeattributertrieval、そのような存在するfirst_nameviagetfirstmeattribute($ valuation)

リポジトリパターンは、データアクセスロジックからビジネスロジックを切り離すために使用される設計パターンです。 1.インターフェイス(契約)を介してデータアクセスメソッドを定義します。 2。特定の操作は、リポジトリクラスによって実装されます。 3.コントローラーは、依存関係噴射を介してインターフェイスを使用し、データソースに直接接触しません。 4.利点には、きちんとしたコード、強力なテスト可能性、簡単なメンテナンス、チームのコラボレーションが含まれます。 5。中規模および大規模なプロジェクトに適用されると、小規模プロジェクトはモデルを直接使用できます。

laraveLeLoquentsSubqueriesInselect、from、where、andorderbyclauses、enableing flexibledataryvalwithoutrawsql;

Laravelプロジェクトを作成し、データベース環境を構成します。 2。職人を使用して、モデル、移行、コントローラーを生成します。 3。API.phpでAPIリソースルーティングを定義します。 4.コントローラーに追加、削除、変更、クエリメソッドを実装し、要求の確認を使用します。 5. LARAVELSANCTUMをインストールして、API認証を実装し、ルートを保護します。 6. JSON応答形式を統合し、エラーを処理します。 7. Postmanおよびその他のツールを使用してAPIをテストし、最後に完全で拡張可能なRestfulapiを取得します。

laravelcashierviacomposerandconfigure andbillabletrait.2.createSubscriptionPlansinsinsShashboardandnoteplanids.3.collectpaymentmethodusingsingsingsingsingsingsingStoreitviasetupintent.4.subscribeusertoaplanusingnewsubautpay()

laravel'simplementation ofmvchaslimitations:1)controllersorsersoftentrersorsoftenterressoftendediding whichmodelandviewtouse、leading to'fat'controllers.2)eloquentmodelscantakeOntOntOMANYRESPONSIBITITIONSBEYONDDATAREPRENTATION.3)

laravelimplementsthemvcpatternbyusingmodelsfordatamanagement、controllers forbusinesslogic、andviewsforpresentation.1)ModelinelaLavellaLavelFulormshandlingDataAndRelations.2)ControlerSersManageTheEtheflowBetweenModelsAndviews.3)ViewsuseBladetemplationfor
