ホームページ  >  記事  >  PHPフレームワーク  >  Laravelによるタスクのスケジューリング: 反復的なタスクを定期的に実行する

Laravelによるタスクのスケジューリング: 反復的なタスクを定期的に実行する

王林
王林オリジナル
2023-08-13 17:05:131733ブラウズ

Laravelによるタスクのスケジューリング: 反復的なタスクを定期的に実行する

Laravel によるタスク スケジューリング: 反復タスクを定期的に実行する

はじめに:
Web アプリケーションを開発する場合、定期的に実行する必要がある反復タスクがいくつかあります。たとえば、電子メールの送信、レポートの生成、データのバックアップなどです。これらのタスクを時々手動で実行するのは明らかに非効率であり、見逃しがちです。 Laravel は、これらのタスクを定期的に自動的に実行し、開発効率を向上させるのに役立つ強力なタスク スケジューリング機能を提供します。この記事では、Laravel でタスクをスケジュールし、反復的なタスクのスケジュール実行を実装する方法を紹介します。

1. タスクスケジューラ
Laravel はタスクスケジューラを使用して、さまざまなタスクを管理および実行します。タスク スケジューラは、CRON 式を使用してタスクの実行時間を指定します。 CRON 式は、分、時間、日付、月、曜日を指定できる時間式です。 Laravel では、アーティザン コマンドを使用してタスク スケジュールを作成、変更、削除できます。

2. タスク スケジューリングの作成
まず、タスク スケジューリング クラスを作成する必要があります。 Laravel では、Artisan コマンドを使用してタスク スケジューラを作成できます。

php artisan make:command SendEmails

上記のコマンドは、SendEmails.php## という名前のファイルを app/Console/Commands## に作成します。 # ディレクトリ #IlluminateConsoleCommand から継承されたクラスを含むファイル。 3. タスクのスケジュールを定義する

SendEmails.php
ファイルを開き、タスクの特定のロジックを handle() メソッドに追加します。たとえば、すべてのユーザーに電子メールを送信したい場合は、handle() メソッドに次のコードを記述します。 <pre class='brush:php;toolbar:false;'>public function handle() { $users = User::all(); foreach ($users as $user) { // 发送邮件给$user } }</pre> 4. タスクのスケジュール設定を構成します

Open

app/ Console/Kernel.php
ファイル。すべてのタスク スケジュール設定が含まれます。 schedule() メソッドでタスクのスケジュールを設定する必要があります。たとえば、SendEmails タスクを毎日午前 10 時に実行したい場合は、schedule() メソッドに次の構成を追加できます。上記の設定は毎日実行されます。午前 10 時に SendEmails タスクを実行します。

5. タスク スケジューリングを使用するphp Artisanschedule:run

コマンドを使用して、設定されたスケジュールに従ってタスクを自動的に実行するタスク スケジューラを実行できます。このコマンドは、CRON などのシステムのスケジュールされたタスク ツールを使用して定期的に呼び出すことができます。


Linux システムでは、次のコマンドを使用して CORN スケジュールされたタスクを構成できます: <pre class='brush:php;toolbar:false;'>protected function schedule(Schedule $schedule) { $schedule-&gt;command('emails:send') -&gt;dailyAt('10:00'); }</pre>次に、開いているテキスト エディターで次の内容を追加します:

crontab -e

The上記のコマンドは、毎分

php 職人スケジュール:run

コマンドを実行します。

6. その他のタスク スケジューリング構成CRON 式を使用してタスクを定期的に実行することに加えて、次のような他の方法でタスク スケジューリングを構成することもできます:

使用 ##毎分タスクを実行するには #everyMinute()
メソッド:

    * * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1
  1. タスクを毎日定期的に実行するには、daily()
  2. メソッドを使用します。 1 から 23 までの時間パラメータを渡します:
    $schedule->command('emails:send')
             ->everyMinute();
  1. weekdays()
  2. メソッドを使用して、タスクが平日にのみ実行されるように指定します:
    $schedule->command('emails:send')
             ->daily(13);
  1. 4. まとめ Laravel のタスクスケジューリング機能により、繰り返しのタスクを簡単に定期的に実行することができます。シンプルな構成により、いくつかの繰り返し作業を定期的に簡単に実行でき、開発効率を向上させることができます。実際の開発では、タスクスケジューラと他のLaravel機能を組み合わせて、より複雑なタスクスケジューリングロジックを実装できます。この記事がお役に立てば幸いです。
  2. 上記の操作により、Laravel のタスクスケジューラーを使用して、定期的に繰り返し実行されるタスクを簡単に実行できます。メール送信やレポート作成、データバックアップなどを簡単な設定で自動スケジュール実行でき、開発効率が向上します。この記事がお役に立てば幸いです!

参考:

Laravel ドキュメント: タスクのスケジュール、https://laravel.com/docs/8.x/scheduling

Laravel ドキュメント: Cron 構文、 https://laravel.com/docs/8.x/scheduling#cron-syntax

    以上がLaravelによるタスクのスケジューリング: 反復的なタスクを定期的に実行するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。