PHPのLaravelスケジュールタスクスケジュールの分析

不言
リリース: 2023-04-03 08:00:01
オリジナル
2797 人が閲覧しました

この記事では主にPHPのLaravelのスケジュールタスクScheduleの分析を紹介します。ある参考値がありますので、共有します。困っている友達は参考にしてください。

前提: この方法は、この記事では、Linux の crontab スケジュールされたタスクを使用して、Laravel スケジューリングの実装を支援します (Mac も)。
1. まず、Crontab のスケジュールされたタスクを追加します。ここでは簡単に説明します。
コマンド crontab -e を使用して次の内容を追加します

* * * * * /usr/local/bin/php /usr/local/var/www/projectName/artisan schedule:run >> /dev/null 2>&1
ログイン後にコピー

上記のコマンド Crontab は Laravel のスケジュール コマンドを 1 分ごとに調整し、Laravel がタスクを判断して実行します。
注: php と アルティザン のディレクトリに注意してください。php は php ディレクトリを表示できます。
***** コマンド
さらに、 の前の 5 *上記のコマンドは、それぞれ、分、時間、日、月、週を表します。
Minute: 0 ~ 59 の整数。デフォルトの * および */1 は 1 分を表します。
時間: 0 ~ 23 の整数。
Day: 1 ~ 31 の整数。
Month: 1 ~ 12 の整数。
Week: 0 ~ 7 の整数。0 と 7 は両方とも日曜日を表します。
crontab -l は、現在スケジュールされているタスクを一覧表示できます。

2. Laravel スケジュールタスクを追加します。
1. App\Console\Kernel クラスでスケジュール タスクを定義します:

<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Laravel\Lumen\Console\Kernel as ConsoleKernel;
use Log;class Kernel extends ConsoleKernel
{    /**
     * The Artisan commands provided by your application.
     * 定义Artisan命令
     * @var array
     */    protected $commands = [
                \App\Console\Commands\test::class,

    ];    /**
     * Define the application&#39;s command schedule.
     * 定义调度任务
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */    protected function schedule(Schedule $schedule)
    {        //方法一://            $schedule->call(function () {//                Log::info(&#39;任务调度&#39;);//            })->everyMinute();        //方法二:
        $schedule->command(&#39;test&#39;)->everyMinute();
    }
}
ログイン後にコピー

2 つの実装方法が上に示されています。方法 1 はクロージャを使用するもので、方法 2 は Artisan コマンドを使用するものです。
多くのスケジュール時間があります:
->cron('* * * * *'); カスタム Cron スケジュールでタスクを実行します
->everyMinute(); 1 分ごとに 1 回実行します タスク
->everyFiveMinutes(); 5 分ごとにタスクを実行します
->everyTenMinutes(); 10 分ごとにタスクを実行します
->everyThirtyMinutes(); 30 分ごとにタスクを実行します
- >hourly(); タスクを 1 時間ごとに実行します
->daily(); タスクを毎日午前 0:00 に実行します
->dailyAt('13:00'); タスクを次の間隔で実行しますday at 13:00 Task
->twiceDaily(1, 13); 毎日 1:00 & 13:00 にタスクを実行します
->weekly(); タスクを週に 1 回実行します
->monthly(); Every 月に 1 回タスクを実行します
追加のメソッドがあります。参照してください: http://laravelacademy.org/post/235.html

の操作を続行します。方法 2:
3. アーティザン コマンドの定義方法:

<?php namespace App\Console\Commands;

use Illuminate\Console\Command;
use Log;class test extends Command {    /**
     * The console command name.
     *
     * @var string
     */    protected $name = &#39;test:putcache&#39;;    /**
     * The console command description.
     *
     * @var string
     */    protected $description = &#39;test controller&#39;;    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {            //这里做任务的具体处理,可以用模型
            Log::info(&#39;任务调度&#39;.time());
    }

}
ログイン後にコピー

わかりました。上記でスケジュールされたタスクを実行できます。少しトリックがあります。上記のタスクが実行されない場合は、php コマンドを使用できますエラー メッセージを出力するための職人リスト

上記がこの記事の全内容です。皆様の学習に役立つことを願っています。その他の関連コンテンツについては、PHP 中国語 Web サイトに注目してください。

関連する推奨事項:

別の方法を使用して Laravel データベース テストを実行する (SQLite)

Laravel 開発環境のデプロイメント Homestead のインストールおよび構成プロセス (Windows システム)

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート