Laravel框架实现定时发布任务的方法


Posted in PHP onAugust 16, 2018

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

背景:需要每隔一小时新建一个任务

http://laravelacademy.org/post/8484.html

Laravel官方自带这个功能,需要利用到Linux系统的cronTab功能。

1、利用Linux的cronTab功能

(1)进入Linux服务器环境,命令行输入

crontab -e

这样就直接进入了服务器下的/var/spool/cron/root文件。如果/var/spool/cron/下还没有root文件,输入上面那个命令就会自动新建root文件了。

(2)先进入文件编辑模式,在root文件中输入

* * * * * /usr/local/php/bin/php  /opt/xxx/xxx/artisan  schedule:run 1>> /dev/null 2>&1

前面第一个目录是php在服务器上的位置,如果不清楚,可以命令行输入which php自行查看然后修改。

第二个目录是你的laravel项目的存放位置,就是artisan文件所在的根目录

2、然后在laravel项目目录下新建任务,命令行输入

php artisan make:command SendTask

然后发现在app/Console/Commands路径下多了一个SendTask.php的文件

自定义这个文件的$signature(等会儿要跟app/Console/Kernel.php文件中的command里面的名称对应,比如我写的是task:send)$description(对这个任务的描述)handle()方法中是这个定时任务的主要逻辑代码。

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

在$commands里要增加刚刚的任务的存放路径;要同时执行多个任务时,将要同时执行的任务的class加入到$commands

protected $commands = [
\App\Console\Commands\SendTasks::class,
\App\Console\Commands\SendTaskEveryDay::class,
\App\Console\Commands\SendTaskEveryWeek::class,

schedule里面是定时执行的核心代码:可以自己直接在里面写要执行的任务的内容,也可以调用新建的command里的任务执行内容。后面就是说明执行任务的频次。

protected function schedule(Schedule $schedule)
{
//  $schedule->call(function () {
//   Task::create(['title' => '发送定时任务']);
//  })->everyMinute();
//调用artisan
// $schedule->command('tasks:send')->hourly();
$schedule->command('tasks:send')->cron('0 */2 * * *');
$schedule->command('tasks:everyday')->dailyAt('09:00');

其实到这里已经是可以执行发布定时任务的期待了,但是我希望可以传参到这个定时任务里面去,因为每次的任务内容不一样,需要达到可以自定义的效果。在这里纠结了很久,还尝试了修改handle()方法,修改成为handle($data),然后在要发布定时任务的时候调用这个handle()方法,然后将参数通过$data传过来,但是发现一旦handle()里面带参数之后定时任务就不能执行了,具体原因不知道,但是这个思路明显就是错了。

最后走了很多弯路,想到一个办法,不能从外部传参进去,就在方法里面把参数查出来。我想要的效果就是:新建一个任务,然后这个新建的任务需要每隔1小时自动新建一次。

想到的解决办法就是在handle()方法里面用sql语句或者查询构造器先把新建的那个定时任务查出来,然后将这个任务再新增一次。暂时能想到的就是这个办法,起码可以达到我想要的效果了。

$cron=Task::where('type', 'xxx')
 ->first();
$cronTab=$cron->jsonSerialize();
$task= Task::create($cronTab);

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

PHP 相关文章推荐
Oracle 常见问题解答
Oct 09 PHP
在windows iis5下安装php4.0+mysql之我见
Oct 09 PHP
深入理解require与require_once与include以及include_once的区别
Jun 05 PHP
PHP图片处理之图片背景、画布操作
Nov 19 PHP
PHP中基本HTTP认证技巧分析
Mar 16 PHP
浅谈PHP中的面向对象OOP中的魔术方法
Jun 12 PHP
php实现的双色球算法示例
Jun 20 PHP
PHP设计模式之装饰器模式定义与用法简单示例
Aug 13 PHP
Yii2语言国际化的配置教程
Aug 19 PHP
微信公众平台开发教程④ ThinkPHP框架下微信支付功能图文详解
Apr 10 PHP
关于laravel 日志写入失败问题汇总
Oct 17 PHP
基于PHP+Mysql简单实现了图书购物车系统的实例详解
Aug 06 PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
Aug 16 #PHP
Laravel中的chunk组块结果集处理与注意问题
Aug 15 #PHP
PHP curl批处理及多请求并发实现方法分析
Aug 15 #PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
Aug 15 #PHP
php使用curl获取header检测开启GZip压缩的方法
Aug 15 #PHP
深入研究PHP中的preg_replace和代码执行
Aug 15 #PHP
PHP中一个有趣的preg_replace函数详解
Aug 15 #PHP
You might like
两种php调用Java对象的方法
2006/10/09 PHP
如何跨站抓取别的站点的页面的补充
2006/10/09 PHP
PHP array_flip() 删除重复数组元素专用函数
2010/05/16 PHP
基于PHP CURL用法的深入分析
2013/06/09 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
2014/01/30 PHP
PHP strtotime函数用法、实现原理和源码分析
2015/02/04 PHP
php通过rmdir删除目录的简单用法
2015/03/18 PHP
深入分析PHP优化及注意事项
2016/07/04 PHP
PHP从二维数组得到N层分类树的实现代码
2016/10/11 PHP
Zend Framework前端控制器用法示例
2016/12/11 PHP
php格式文件打开的四种方法
2018/02/24 PHP
PHP删除字符串中非字母数字字符方法总结
2019/01/20 PHP
Javascript 自定义类型方法小结
2010/03/02 Javascript
关于setInterval、setTimeout在jQuery中的使用注意事项
2011/09/28 Javascript
网页加载时页面显示进度条加载完成之后显示网页内容
2012/12/23 Javascript
node.js中的http.response.writeHead方法使用说明
2014/12/14 Javascript
p5.js入门教程和基本形状绘制
2018/03/15 Javascript
Vue封装的可编辑表格插件方法
2018/08/28 Javascript
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
2019/01/19 Javascript
jquery css实现流程进度条
2020/03/26 jQuery
从0搭建vue-cli4脚手架
2020/06/17 Javascript
tensorflow 保存模型和取出中间权重例子
2020/01/24 Python
Anaconda+vscode+pytorch环境搭建过程详解
2020/05/25 Python
OpenCV+Python3.5 简易手势识别的实现
2020/12/21 Python
Gtech官方网站:地毯清洁器、吸尘器及园艺设备
2018/05/23 全球购物
美国购买隐形眼镜网站:Lenses For Less
2020/07/05 全球购物
C#实现对任一张表的数据进行增,删,改,查要求,运用Webservice,体现出三层架构
2014/07/11 面试题
安全生产活动月方案
2014/03/09 职场文书
2014年文学毕业生自我鉴定
2014/04/23 职场文书
服务理念标语
2014/06/18 职场文书
公司租房协议书范本
2014/10/08 职场文书
2014全年工作总结
2014/11/27 职场文书
李白经典诗之一:全文无一“月”字,却句句有月
2019/07/12 职场文书
Python Pandas模块实现数据的统计分析的方法
2021/06/24 Python
python中数组和列表的简单实例
2022/03/25 Python
Go中使用gjson来操作JSON数据的实现
2022/08/14 Golang