ホームページ >バックエンド開発 >PHPチュートリアル >LaravelアプリでCronジョブを設定する方法

LaravelアプリでCronジョブを設定する方法

Joseph Gordon-Levitt
Joseph Gordon-Levittオリジナル
2025-02-16 12:06:12333ブラウズ

この記事では、Laravelのタスクスケジューラを使用して、サーバー上の繰り返しの管理タスクを管理し、職人コマンドとCronを活用する方法について説明します。 説明を合理化しましょう:

How to Set Up a Cron Job in Your Laravel App

重要な概念:

  • cron:(構成ファイル)を使用したUnixのようなシステムのタスクスケジューラ。 Laravelタスクは通常、CLIモードPHPスクリプトです crontab
  • laravel artisanコマンド:
  • を使用して堅牢なCLIスクリプトを作成します。これにより、カスタマイズされたタスクのコマンドクラスフレームワークが生成されます php artisan make:consolelaravelタスクスケジューラ:
  • クラスの
  • メソッド(app/console/kernel.php)のメソッド内でタスクを簡単にスケジュールします。 1時間ごと、毎日、毎週、毎月、カスタムクロンスケジュールをサポートします スケジューラスタートアップ:scheduleサーバー上の単一のCronジョブが必要です:Kernel(毎分実行されます)。 laravelは頻度を処理し、予防をオーバーラップします。
  • Cron Basics(brief):* * * * * php /path/to/artisan schedule:run 1>> /dev/null 2>&1
Cronは、5フィールドの式(分、時間、月、月、曜日)を使用してスケジューリングを定義します。

はすべての値を表します。 例:(毎日12:30に実行)。

Laravel Artisanコマンドの作成:*30 12 * * * command/to/run

コマンドを作成するのは簡単です:

コマンドスケルトンを生成する:

生成されたコマンドクラス(app/console/commands/happybirthday.php)の

メソッドを変更して、タスクロジックを含みます。 例(誕生日SMSの送信):
  1. php artisan make:console HappyBirthday --command=sms:birthday
  2. 配列内でコマンドを登録します。handle()
<code class="language-php">public function handle()
{
    $users = User::whereBirthDate(date('m-d'))->get();
    foreach ($users as $user) {
        if ($user->cellphone) {
            SMS::to($user->cellphone)->msg('Happy Birthday, ' . $user->fname . '!')->send();
        }
    }
    $this->info('Birthday messages sent!');
}</code>
スケジューリングコマンド:
  1. app/Console/Kernel.php $commands
  2. のメソッドを使用します

スケジューラの開始:

上記の単一のCronジョブをサーバーのCrontabに追加します。 Laravelのスケジューラは残りを管理します scheduleapp/Console/Kernel.phpよくある質問(FAQ):

<code class="language-php">protected function schedule(Schedule $schedule)
{
    $schedule->command('sms:birthday')->daily(); // Runs daily
    $schedule->command('anotherCommand')->hourly(); // Runs hourly
    $schedule->command('myTask')->dailyAt('09:30'); // Runs daily at 9:30 AM
    $schedule->command('weeklyTask')->weekly()->mondays(); // Runs every Monday
    $schedule->command('customCron')->cron('0 0 * * *'); // Runs daily at midnight (custom Cron expression)
    $schedule->command('conditionalTask')->daily()->when(function () { return condition(); }); //Conditional execution
}</code>

(元のFAQはよく書かれていて包括的です。変更は必要ありません。) この改訂された応答は、明確さと構造を改善しながら、元の情報を維持します。 読みやすさとベストプラクティスのために、コードの例もわずかに改善されています。

以上がLaravelアプリでCronジョブを設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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