laravel6のキューとタスクスケジューリングの詳細な説明
(1) キューの実装
laravelではキューを操作するだけで実装できます。 , 実装を前提として、簡単な設定を行い、config/queue.php
を修正する必要があります。詳しくは公式ドキュメントを確認してください。ここでは詳しく説明しません。本題に入りましょう。
まず、
phpArtisan make:jobタスククラス名
を実行するとキュータスクが実装できます このコマンドを実行するとアプリディレクトリにジョブが生成されますディレクトリに移動し、新しいタスク クラスを作成します。このタスク クラスは、Illuminate\Contracts\Queue\ShouldQueue
インターフェイスを自動的に継承します。キューはタスク クラスのハンドル メソッドを呼び出すため、必要なのは、特定のビジネス ロジックを実装することで、タスク クラスを簡単に実装できます。この時点では、タスククラスを処理しているのですが、処理用のタスクをどのように割り当てればよいでしょうか?-
laravel では、タスクの分散は単純な実装メソッドを介して行うだけでよく、タスクに対応するキューを指定するだけで済みます。この実装方法では、タスク分散を実現するために次の簡単なコード行のみが必要です。
//任务指定到对应的队列 $job = (new TestQueue())->onQueue('队列名称'); //分发任务 dispatch($job);
ログイン後にコピー キューが分散された後、
php Artisan queue:work
queue プロセッサが実行され、キューに分散されたタスクが処理されます。手動で停止するか、端末を閉じるまで実行されます。キュー プロセッサは常駐プロセスであり、開始されたアプリケーションの状態をメモリに保存するため、対応するコードを変更する場合は、変更されたコード ロジックをロードするためにキュー プロセッサを再起動する必要があることに注意してください。したがって、対応するタスク クラスを変更するときは、正確さを確認するために再起動する必要があります。スーパーバイザーの構成については、こちらの公式ドキュメントで非常にわかりやすく説明されています。公式ドキュメントのポータルを繰り返す必要はありません
(2 ) タスクのスケジューリング
ここでは、簡潔でわかりやすい公式ドキュメントの言葉を直接引用します。
以前は、サーバー上のスケジュールされたタスクごとに Cron エントリを作成する必要がある場合がありました。しかし、これらのタスク スケジューラがソース コードに含まれておらず、Cron エントリを追加するには毎回 SSH リンクを介してサーバーにログインする必要があるため、このアプローチはすぐに不親切になります。
Laravel コマンドラインスケジューラーを使用すると、Laravel でコマンドのスケジュールを明確かつスムーズに定義できます。このタスク スケジューラを使用する場合、サーバー上に Cron エントリを 1 つ作成するだけで済みます。タスクのスケジュールは、app/Console/Kernel.php のスケジュール メソッドで定義されます。
タスクのスケジュール定義。公式のlaravelドキュメントでは、タスクアーティザンコマンドのスケジューリングとキューのスケジューリングがより一般的に使用されます。
//artisan命令调度 $schedule->command('emails:send Taylor --force')->daily(); //队列调度 $schedule->job(new Heartbeat)->everyFiveMinutes(); // 分发任务到「heartbeats」队列... $schedule->job(new Heartbeat, 'heartbeats')->everyFiveMinutes();
ログイン後にコピー上記の手順の
daily()
、everyFiveMinutes()
などのタスク呼び出しの頻度はすべて制限されています。タスクの呼び出し頻度。文字通りの意味で理解するのは難しくありません。実際には、1 分ごとまたは毎日 1 回呼び出されるように設定されています。具体的な呼び出しは次のとおりです (長さを要約すると)。詳細については公式ドキュメントを確認することもできます。
説明 | |
---|---|
カスタマイズされた Cron スケジュール実行タスク | |
タスクを 1 分ごとに実行します | |
5 分ごとにタスクを実行します | |
10 分ごとにタスクを実行します | ##->everyFifteenMinutes(); |
->everyThirtyMinutes(); | |
->hourly(); | |
#->hourlyAt(17); | |
->daily(); | |
->dailyAt('13 :00' ); | |
->twiceDaily(1, 13); | |
->weekly(); | |
->weeklyOn(1 , '8:00'); | |
- >monthly(); | |
->monthlyOn(4, '15:00'); | |
->四半期ごと(); | |
#->yearly(); | 毎年タスクを実行 |
##->timezone('America/New_York'); | タイムゾーンを設定します |
最後に、もちろんスケジューラーを起動して | * * * * * cd /project address&& phpArtisanSchedule を実行します:run >> /dev/null 2>&1
- (3) まとめ
実際のところ、あまり言うことはありませんが、これら 2 つは通常、私たちのプロジェクトにとって重要であり、公式ドキュメントは非常に煩雑です。必要であれば、一般的に使用されるメソッドについて簡単に説明します。Laravel はこれらの一般的な操作をカプセル化しているため、多くの問題が軽減されます。実装ロジックを理解することに興味がある場合は、少なくともその使用方法を最初に知ってください。
最新の 5 つの Laravel ビデオ チュートリアル
以上がlaravel6のキューとタスクスケジューリングの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック

この記事では、堅牢なLaravel Restful APIの構築をガイドします。 プロジェクトのセットアップ、リソース管理、データベースインタラクション、シリアル化、認証、承認、テスト、および重要なセキュリティベストプラクティスをカバーしています。 スケーラビリティチャレに対処します

この記事では、LaravelでOAUTH 2.0認証と承認を実装しています。 League/OAuth2-Serverやプロバイダー固有のソリューションなどのパッケージを使用して、データベースのセットアップ、クライアント登録、承認サーバー構成を強調しています

この記事では、コンポーネントを使用してLaravelで再利用可能なUI要素の作成とカスタマイズについて説明し、組織のベストプラクティスを提供し、パッケージを強化することを提案します。

この記事では、スケーラビリティ、信頼性、セキュリティに焦点を当てたクラウドネイティブ環境でLaravelを展開するためのベストプラクティスについて説明します。重要な問題には、コンテナ化、マイクロサービス、ステートレス設計、最適化戦略が含まれます。

この記事では、Laravelでカスタム検証ルールの作成と使用について説明し、それらを定義および実装する手順を提供します。再利用性や特異性などの利点を強調し、Laravelの検証システムを拡張する方法を提供します。

この記事では、Laravelでカスタムブレードディレクティブの作成と使用を行い、テンプレートを強化します。ディレクティブの定義、テンプレートでそれらを使用し、大規模なプロジェクトでそれらを管理することをカバーし、改善されたコードの再利用性やRなどの利点を強調しています

PHPフレームワークの選択に関しては、LaravelとSymfonyは最も人気があり広く使用されているオプションの1つです。各フレームワークは、独自の哲学、特徴、強みをテーブルにもたらし、さまざまなプロジェクトやユースケースに適しています

この記事では、Laravelの最適なファイルアップロードとクラウドストレージ戦略を調べます。 ローカルストレージとクラウドプロバイダー(AWS S3、Google Cloud、Azure、DigitalOcean)、セキュリティ(検証、消毒、HTTPS)およびパフォーマンスオプティを強調しています
