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. タスクのスケジュール設定を構成します
app/ Console/Kernel.php
ファイル。すべてのタスク スケジュール設定が含まれます。 schedule()
メソッドでタスクのスケジュールを設定する必要があります。たとえば、SendEmails
タスクを毎日午前 10 時に実行したい場合は、schedule()
メソッドに次の構成を追加できます。上記の設定は毎日実行されます。午前 10 時に SendEmails
タスクを実行します。
5. タスク スケジューリングを使用するphp Artisanschedule:run
Linux システムでは、次のコマンドを使用して CORN スケジュールされたタスクを構成できます: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>protected function schedule(Schedule $schedule)
{
$schedule->command('emails:send')
->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
タスクを毎日定期的に実行するには、
daily()$schedule->command('emails:send') ->everyMinute();
weekdays()$schedule->command('emails:send') ->daily(13);
Laravel のタスクスケジューリング機能により、繰り返しのタスクを簡単に定期的に実行することができます。シンプルな構成により、いくつかの繰り返し作業を定期的に簡単に実行でき、開発効率を向上させることができます。実際の開発では、タスクスケジューラと他のLaravel機能を組み合わせて、より複雑なタスクスケジューリングロジックを実装できます。この記事がお役に立てば幸いです。
参考:
Laravel ドキュメント: タスクのスケジュール、https://laravel.com/docs/8.x/scheduling
Laravel ドキュメント: Cron 構文、 https://laravel.com/docs/8.x/scheduling#cron-syntax
以上がLaravelによるタスクのスケジューリング: 反復的なタスクを定期的に実行するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。