この記事では主に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's command schedule. * 定义调度任务 * @param \Illuminate\Console\Scheduling\Schedule $schedule * @return void */ protected function schedule(Schedule $schedule) { //方法一:// $schedule->call(function () {// Log::info('任务调度');// })->everyMinute(); //方法二: $schedule->command('test')->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 = 'test:putcache'; /** * The console command description. * * @var string */ protected $description = 'test controller'; /** * Execute the console command. * * @return mixed */ public function handle() { //这里做任务的具体处理,可以用模型 Log::info('任务调度'.time()); } }
わかりました。上記でスケジュールされたタスクを実行できます。少しトリックがあります。上記のタスクが実行されない場合は、php コマンドを使用できますエラー メッセージを出力するための職人リスト
上記がこの記事の全内容です。皆様の学習に役立つことを願っています。その他の関連コンテンツについては、PHP 中国語 Web サイトに注目してください。
関連する推奨事項:
別の方法を使用して Laravel データベース テストを実行する (SQLite)
Laravel 開発環境のデプロイメント Homestead のインストールおよび構成プロセス (Windows システム)
以上がPHPのLaravelスケジュールタスクスケジュールの分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。