首页 > 开发 > PHP > 正文

Laravel框架定时任务2种实现方式示例

2024-05-04 22:41:51
字体:
来源:转载
供稿:网友

本文实例讲述了Laravel框架定时任务2种实现方式。分享给大家供大家参考,具体如下:

第一种

1、生成一个commands文件

> php artisan make:command test

2、打开文件进行修改

laravel/App/Console/Commands/test.php

<?phpnamespace App/Console/Commands;use Illuminate/Console/Command;use Illuminate/Support/Facades/Log;class test extends Command{ /**  * The name and signature of the console command.  *  * @var string  */ protected $signature = 'test:insert'; // php artisan list 中将会生成 "php artisan test:insert " 指令 /**  * The console command description.  *  * @var string  */ protected $description = 'insert Test table some test data'; // 对上面指令的描述 /**  * Create a new command instance.  *  * @return void  */ public function __construct() {  parent::__construct(); } /**  * Execute the console command.  *  * @return mixed  */ public function handle() {  // 编写你要的定时任务执行的代码!  # eg Log::info('test'); }}

> php artisan list 查看

3、然后修改: laravel/app/Console/Kernel.php 文件

<?phpnamespace App/Console;use Illuminate/Console/Scheduling/Schedule;use Illuminate/Foundation/Console/Kernel as ConsoleKernel;class Kernel extends ConsoleKernel{ protected $commands = [  // 参考手册 新加  /App/Console/Commands/test::class, ]; // 定义应用的命令调度 protected function schedule(Schedule $schedule) {   // 新加 每分钟执行一次  $schedule->command('test:insert')->everyMinute(); } protected function commands() {  $this->load(__DIR__.'/Commands');  require base_path('routes/console.php'); }}

4、启用计划任务:在服务器中加入到计划任务 crontab -e

注意这里的 path 是你的laravel项目根目录的 绝对路径!, 然后加上后面的 artisan 到结尾的字符串

* * * * * php /path/artisan schedule:run >> /dev/null 2>&1
* * * * * php /code/src/laravel/artisan schedule:run >> /dev/null 2>&1

5、打开日志文件查看

laravel/storage/logs/laravel.log

第二种

使用 shell脚本执行

因为 php artisan list 可以查看到 执行指令 test:insert

所以可以考虑用 .sh 脚本执行,还是类似上面 crontab -e编写

1、先编写 .sh 脚本 laravel/test.sh 放在项目某个位置,文件内写入

php artisan test:insert

上面指令在命令行手动每执行一次就可以触发一次编写的程序,相当于给 laravel.log 写入一次 test

2、使用 crontab -e 编写 执行 第一步写的 test.sh 脚本

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表