ホームページ  >  記事  >  PHPフレームワーク  >  laravel6のキューとタスクスケジューリングの詳細な説明

laravel6のキューとタスクスケジューリングの詳細な説明

藏色散人
藏色散人転載
2021-07-19 15:13:152353ブラウズ

(1) キューの実装

laravelではキューを操作するだけで実装できます。 , 実装を前提として、簡単な設定を行い、config/queue.phpを修正する必要があります。詳しくは公式ドキュメントを確認してください。ここでは詳しく説明しません。本題に入りましょう。

  1. まず、phpArtisan make:jobタスククラス名を実行するとキュータスクが実装できます このコマンドを実行するとアプリディレクトリにジョブが生成されますディレクトリに移動し、新しいタスク クラスを作成します。このタスク クラスは、Illuminate\Contracts\Queue\ShouldQueue インターフェイスを自動的に継承します。キューはタスク クラスのハンドル メソッドを呼び出すため、必要なのは、特定のビジネス ロジックを実装することで、タスク クラスを簡単に実装できます。この時点では、タスククラスを処理しているのですが、処理用のタスクをどのように割り当てればよいでしょうか?
    laravel6のキューとタスクスケジューリングの詳細な説明

  2. laravel では、タスクの分散は単純な実装メソッドを介して行うだけでよく、タスクに対応するキューを指定するだけで済みます。この実装方法では、タスク分散を実現するために次の簡単なコード行のみが必要です。

    //任务指定到对应的队列
    $job = (new TestQueue())->onQueue('队列名称');
    //分发任务
    dispatch($job);
  3. キューが分散された後、php Artisan queue:workqueue プロセッサが実行され、キューに分散されたタスクが処理されます。手動で停止するか、端末を閉じるまで実行されます。キュー プロセッサは常駐プロセスであり、開始されたアプリケーションの状態をメモリに保存するため、対応するコードを変更する場合は、変更されたコード ロジックをロードするためにキュー プロセッサを再起動する必要があることに注意してください。したがって、対応するタスク クラスを変更するときは、正確さを確認するために再起動する必要があります。

  4. スーパーバイザーの構成については、こちらの公式ドキュメントで非常にわかりやすく説明されています。公式ドキュメントのポータルを繰り返す必要はありません

(2 ) タスクのスケジューリング

ここでは、簡潔でわかりやすい公式ドキュメントの言葉を直接引用します。

以前は、サーバー上のスケジュールされたタスクごとに Cron エントリを作成する必要がある場合がありました。しかし、これらのタスク スケジューラがソース コードに含まれておらず、Cron エントリを追加するには毎回 SSH リンクを介してサーバーにログインする必要があるため、このアプローチはすぐに不親切になります。
Laravel コマンドラインスケジューラーを使用すると、Laravel でコマンドのスケジュールを明確かつスムーズに定義できます。このタスク スケジューラを使用する場合、サーバー上に Cron エントリを 1 つ作成するだけで済みます。タスクのスケジュールは、app/Console/Kernel.php のスケジュール メソッドで定義されます。

  1. タスクのスケジュール定義。公式のlaravelドキュメントでは、タスクアーティザンコマンドのスケジューリングとキューのスケジューリングがより一般的に使用されます。

    //artisan命令调度
    $schedule->command('emails:send Taylor --force')->daily();
    //队列调度
    $schedule->job(new Heartbeat)->everyFiveMinutes();
    // 分发任务到「heartbeats」队列...
    $schedule->job(new Heartbeat, 'heartbeats')->everyFiveMinutes();
  2. 上記の手順の daily()everyFiveMinutes() などのタスク呼び出しの頻度はすべて制限されています。タスクの呼び出し頻度。文字通りの意味で理解するのは難しくありません。実際には、1 分ごとまたは毎日 1 回呼び出されるように設定されています。具体的な呼び出しは次のとおりです (長さを要約すると)。詳細については公式ドキュメントを確認することもできます。

#メソッド説明##->cron(' * * * * *');->everyMinute();->everyFiveMinutes();->everyTenMinutes(); ##->everyFifteenMinutes();15 分ごとにタスクを実行します->everyThirtyMinutes();30 分ごとにタスクを実行->hourly();タスクを実行毎時タスクを 1 時間ごとに 17 分に実行します毎日午前 0 時にタスクを実行します (翻訳者注: 毎日 0 時)タスクを毎日 13:00 に 1 回実行します実行毎日 1:00 と 13:00 のタスク 1 つのタスク週に 1 回タスクを実行毎週月曜日の 8 時にタスクを実行します毎月 1 つのタスクを実行実行タスクは毎月 1 回、4 日の 15:00 に実行します。タスクを四半期に 1 回実行します#->yearly();毎年タスクを実行* * * * * cd /project address&& phpArtisanSchedule を実行します:run >> /dev/null 2>&1。
カスタマイズされた Cron スケジュール実行タスク
タスクを 1 分ごとに実行します
5 分ごとにタスクを実行します
10 分ごとにタスクを実行します
#->hourlyAt(17);
->daily();
->dailyAt('13 :00' );
->twiceDaily(1, 13);
->weekly();
->weeklyOn(1 , '8:00');
- >monthly();
->monthlyOn(4, '15:00');
->四半期ごと();
##->timezone('America/New_York'); タイムゾーンを設定します
最後に、もちろんスケジューラーを起動して
    (3) まとめ
  1. 実際のところ、あまり言うことはありませんが、これら 2 つは通常、私たちのプロジェクトにとって重要であり、公式ドキュメントは非常に煩雑です。必要であれば、一般的に使用されるメソッドについて簡単に説明します。Laravel はこれらの一般的な操作をカプセル化しているため、多くの問題が軽減されます。実装ロジックを理解することに興味がある場合は、少なくともその使用方法を最初に知ってください。
関連する推奨事項:

最新の 5 つの Laravel ビデオ チュートリアル

以上がlaravel6のキューとタスクスケジューリングの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。