ホームページ  >  記事  >  PHPフレームワーク  >  Laravelでスケジュールされたタスクを実行する方法

Laravelでスケジュールされたタスクを実行する方法

PHPz
PHPzオリジナル
2023-04-14 09:16:443826ブラウズ

Laravel は、豊富なツールと機能を提供する人気のある PHP フレームワークであり、その 1 つにスケジュールされたタスクがあります。この記事では、Laravel でスケジュールされたタスクを実行する方法を学びます。

まず、Laravel にはスケジュールされたタスクを簡単に定義して実行できる「スケジューラー」と呼ばれるツールが提供されています。 Laravel では、スケジューラはオペレーティング システムの cron サービスを使用するため、ターゲット サーバーで cron サービスが開始されていることを確認する必要があります。

次に、Laravel でスケジュールされたタスクを実装する方法を段階的に説明します。

最初のステップは、スケジュールされたタスク クラスを作成することです

Laravel では、次のことを継承できます。 Illuminate\Console\Scheduling\Schedule クラスを使用して、カスタムのスケジュールされたタスク クラスを作成します。このクラスには、スケジュールされたタスクの実行ロジックを定義する「handle」という名前のメソッドが含まれている必要があります。たとえば、次のコードで「SendEmail」という名前のタスク クラスを作成します。

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class SendEmail extends Command
{
    protected $signature = &#39;email:send&#39;;

    protected $description = &#39;Send an email to users&#39;;

    public function handle()
    {
        // 定时任务执行的逻辑
    }
}

上の例では、Laravel の Command クラスを継承する「SendEmail」という名前のクラスを定義します。このクラスでは、タスクをトリガーするコマンド「email:send」と、「phpArtisanList」コマンドの実行時に表示されるタスクの説明を定義します。

2 番目のステップ、スケジュールされたタスクを登録する

Laravel では、Kernel.php ファイルを使用してすべてのスケジュールされたタスクを登録できます。このファイルは「app/Console」ディレクトリにあります。このファイルでは、「schedule」メソッドを使用してすべてのタスクを定義できます。たとえば、作成した SendEmail タスクを 1 分ごとに実行したい場合、コードは次のとおりです:

protected function schedule(Schedule $schedule)
{
    $schedule->command('email:send')->everyMinute();
}

上の例では、「everyMinute」メソッドを使用して、実行する SendEmail タスクを定義します。毎分。

3 番目のステップ、スケジュールされたタスクを開始します

Laravel では、次のコマンドを実行してスケジューラーを開始できます:

* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

次に、上記のコマンドを追加する必要があります。 cron テーブルにコピーして、スケジューラが指定された時間内に実行されるようにします。たとえば、SendEmail タスクを毎分実行するように設定した場合、次のコマンドを cron テーブルに追加する必要があります:

* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

上の例では、「 *" は 1 分ごとに実行されることを意味します。

これで、Laravel でスケジュールされたタスクを正常に実装できました。本番環境でも開発環境でも、Laravel のスケジュールされたタスク機能は一部のタスクを自動化し、時間とエネルギーを節約するのに役立ちます。

以上がLaravelでスケジュールされたタスクを実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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