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 相关文章推荐
多文件上载系统完整版
Oct 09 PHP
如何修改和添加Apache的默认站点目录
Jul 05 PHP
解决php接收shell返回的结果中文乱码问题
Jan 23 PHP
PHP中的命名空间相关概念浅析
Jan 22 PHP
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
Jan 04 PHP
PHP开发制作一个简单的活动日程表Calendar
Jun 20 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
Mar 12 PHP
laravel 5.4中实现无限级分类的方法示例
Jul 27 PHP
LNMP部署laravel以及xhprof安装使用教程
Sep 14 PHP
PHP实现分布式memcache设置web集群session同步的方法
Apr 10 PHP
PHP基于session.upload_progress 实现文件上传进度显示功能详解
Aug 09 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
Nov 23 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中实现中文字符进制转换原理分析
2011/12/06 PHP
php 文件上传实例代码
2012/04/19 PHP
PHP 常用数组内部函数(Array Functions)介绍
2013/06/05 PHP
PHP遍历并打印指定目录下所有文件实例
2014/02/10 PHP
PHP获取数组的键与值方法小结
2015/06/13 PHP
PHP+MySql+jQuery实现的"顶"和"踩"投票功能
2016/05/21 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
PHP的Trait机制原理与用法分析
2019/10/18 PHP
基于jquery的合并table相同单元格的插件(精简版)
2011/04/05 Javascript
分析Node.js connect ECONNREFUSED错误
2013/04/09 Javascript
更快的异步执行(setTimeout多浏览器)
2014/08/12 Javascript
jquery实现submit提交表单
2015/02/03 Javascript
跟我学习javascript的严格模式
2015/11/16 Javascript
JavaScript弹窗基础篇
2016/04/27 Javascript
详解Javascript函数声明与递归调用
2016/10/22 Javascript
jQuery无缝轮播图代码
2016/12/22 Javascript
微信小程序 两种滑动方式(横向滑动,竖向滑动)详细及实例代码
2017/01/13 Javascript
jQuery中的deferred对象和extend方法详解
2017/05/08 jQuery
详解在Node.js中发起HTTP请求的5种方法
2019/01/10 Javascript
js实现多张图片每隔一秒切换一张图片
2019/07/29 Javascript
javascript 代码是如何被压缩的示例代码
2020/05/06 Javascript
浅谈实现在线预览PDF的几种解决办法
2020/08/10 Javascript
利用Python中的mock库对Python代码进行模拟测试
2015/04/16 Python
go和python变量赋值遇到的一个问题
2017/08/31 Python
详解Python网络框架Django和Scrapy安装指南
2019/04/01 Python
探秘TensorFlow 和 NumPy 的 Broadcasting 机制
2020/03/13 Python
对python中各个response的使用说明
2020/03/28 Python
最好的商品表达自己:Cafepress
2019/09/04 全球购物
美国基督教约会网站:ChristianCafe.com
2020/02/04 全球购物
Levi’s西班牙官方网站:李维斯,著名的牛仔裤品牌
2020/08/20 全球购物
大学生军训自我评价分享
2013/11/09 职场文书
主管职责范文
2013/11/09 职场文书
优秀党员自我评价范文
2014/09/15 职场文书
2014县政府领导班子对照检查材料思想汇报
2014/09/25 职场文书
2014年企业党支部工作总结
2014/12/04 职场文书
国庆节主题班会
2015/08/15 职场文书