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

王林
リリース: 2023-08-13 17:05:13
オリジナル
1773 人が閲覧しました

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() メソッドに次のコードを記述します。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>public function handle() { $users = User::all(); foreach ($users as $user) { // 发送邮件给$user } }</pre><div class="contentsignin">ログイン後にコピー</div></div> 4. タスクのスケジュール設定を構成します

Open

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

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

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


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

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 サイトの他の関連記事を参照してください。

    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    最新の問題
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート
    私たちについて 免責事項 Sitemap
    PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!