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


Posted in PHP onDecember 08, 2018

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

第一种

1、生成一个commands文件

> php artisan make:command test

2、打开文件进行修改

laravel\App\Console\Commands\test.php

<?php
namespace 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 查看

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

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

<?php
namespace 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 脚本

* * * * * laravel/test.sh

以上两种均可看到 laravel.log 日志

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

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

PHP 相关文章推荐
echo, print, printf 和 sprintf 区别
Dec 06 PHP
php FLEA中二叉树数组的遍历输出
Sep 26 PHP
php实现文件下载功能的几个代码分享
May 10 PHP
PHP在网页中动态生成PDF文件详细教程
Jul 05 PHP
php实现设计模式中的单例模式详解
Oct 11 PHP
php简单实现查询数据库返回json数据
Apr 16 PHP
php使用socket post数据到其它web服务器的方法
Jun 02 PHP
PHP实现根据密码长度显示安全条
Jul 04 PHP
PHP中__set()实例用法和基础讲解
Jul 23 PHP
Laravel框架实现抢红包功能示例
Oct 31 PHP
laravel ajax curd 搜索登录判断功能的实现
Apr 17 PHP
PHP单例模式模拟Java Bean实现方法示例
Dec 07 #PHP
thinkPHP框架实现的简单计算器示例
Dec 07 #PHP
PHP实现的简单留言板功能示例【基于thinkPHP框架】
Dec 07 #PHP
laravel5使用freetds连接sql server的方法
Dec 07 #PHP
php多进程模拟并发事务产生的问题小结
Dec 07 #PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
Dec 07 #PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
Dec 06 #PHP
You might like
destoon整合UCenter图文教程
2014/06/21 PHP
10个值得深思的PHP面试题
2016/11/14 PHP
JS的反射问题
2010/04/07 Javascript
JSCode all of Brower 全局屏蔽网页右键功能 具体实现
2013/06/05 Javascript
javascript jq 弹出层实例
2013/08/25 Javascript
jquery插件jTimer(jquery定时器)使用方法
2013/12/23 Javascript
jQuery中first()方法用法实例
2015/01/06 Javascript
jQuery子窗体取得父窗体元素的方法
2015/05/11 Javascript
node.js调用C++开发的模块实例
2015/07/03 Javascript
以Python代码实例展示kNN算法的实际运用
2015/10/26 Javascript
获取JS中网页各种高宽与位置的方法总结
2016/07/27 Javascript
javascript中的 object 和 function小结
2016/08/14 Javascript
利用Jquery实现几款漂亮实用的时间轴(附示例代码)
2017/02/15 Javascript
node实现简单的反向代理服务器
2017/07/26 Javascript
JS实现定时任务每隔N秒请求后台setInterval定时和ajax请求问题
2017/10/15 Javascript
Vue2.5 结合 Element UI 之 Table 和 Pagination 组件实现分页功能
2018/01/26 Javascript
JavaScript设计模式之调停者模式实例详解
2018/02/03 Javascript
bootstrap动态调用select下拉框的实例代码
2018/08/09 Javascript
在Vue组件中获取全局的点击事件方法
2018/09/06 Javascript
微信小程序开发之map地图组件定位并手动修改位置偏差
2019/08/17 Javascript
JS使用setInterval计时器实现挑战10秒
2020/11/08 Javascript
[01:03:51]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第三场
2018/04/09 DOTA
[02:17]快乐加倍!DOTA2食人魔魔法师至宝+迎霜节活动上线
2019/12/22 DOTA
Python卸载模块的方法汇总
2016/06/07 Python
Python实现的径向基(RBF)神经网络示例
2018/02/06 Python
使用Python监控文件内容变化代码实例
2018/06/04 Python
Appium+python自动化怎么查看程序所占端口号和IP
2019/06/14 Python
Python协程 yield与协程greenlet简单用法示例
2019/11/22 Python
解决python 找不到module的问题
2020/02/12 Python
在HTML5 Canvas中放入图片和保存为图片的方法
2014/05/03 HTML / CSS
HTML5+WebSocket实现多文件同时上传的实例
2016/12/29 HTML / CSS
美国单身专业人士在线约会网站:EliteSingles
2019/03/19 全球购物
档案信息化建设方案
2014/05/16 职场文书
企业安全生产承诺书
2014/05/22 职场文书
高中生军训感言
2015/08/01 职场文书
导游词之临安白水涧
2019/11/05 职场文书