ホームページ > 記事 > PHPフレームワーク > Laravelでスケジュールされたタスクを実行する方法
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 = 'email:send'; protected $description = 'Send an email to users'; 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 サイトの他の関連記事を参照してください。