Laravel框架实现定时发布任务的方法
Laravel  /  管理员 发布于 5年前   281
本文实例讲述了Laravel框架实现定时发布任务的方法。分享给大家供大家参考,具体如下: 背景:需要每隔一小时新建一个任务 http://laravelacademy.org/post/8484.html Laravel官方自带这个功能,需要利用到Linux系统的cronTab功能。 1、利用Linux的cronTab功能 (1)进入Linux服务器环境,命令行输入 这样就直接进入了服务器下的/var/spool/cron/root文件。如果/var/spool/cron/下还没有root文件,输入上面那个命令就会自动新建root文件了。 (2)先进入文件编辑模式,在root文件中输入 前面第一个目录是php在服务器上的位置,如果不清楚,可以命令行输入 第二个目录是你的laravel项目的存放位置,就是artisan文件所在的根目录 2、然后在laravel项目目录下新建任务,命令行输入 然后发现在app/Console/Commands路径下多了一个SendTask.php的文件 自定义这个文件的$signature(等会儿要跟app/Console/Kernel.php文件中的command里面的名称对应,比如我写的是 3、然后修改app/Console/Kernel.php文件 在$commands里要增加刚刚的任务的存放路径;要同时执行多个任务时,将要同时执行的任务的class加入到$commands schedule里面是定时执行的核心代码:可以自己直接在里面写要执行的任务的内容,也可以调用新建的command里的任务执行内容。后面就是说明执行任务的频次。 其实到这里已经是可以执行发布定时任务的期待了,但是我希望可以传参到这个定时任务里面去,因为每次的任务内容不一样,需要达到可以自定义的效果。在这里纠结了很久,还尝试了修改 最后走了很多弯路,想到一个办法,不能从外部传参进去,就在方法里面把参数查出来。我想要的效果就是:新建一个任务,然后这个新建的任务需要每隔1小时自动新建一次。 想到的解决办法就是在 更多关于Laravel相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》 希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。crontab -e
which php
自行查看然后修改。php artisan make:command SendTask
task:send)
、$description(对这个任务的描述)
、handle()
方法中是这个定时任务的主要逻辑代码。protected $commands = [\App\Console\Commands\SendTasks::class,\App\Console\Commands\SendTaskEveryDay::class,\App\Console\Commands\SendTaskEveryWeek::class,
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()
里面带参数之后定时任务就不能执行了,具体原因不知道,但是这个思路明显就是错了。handle()
方法里面用sql语句或者查询构造器先把新建的那个定时任务查出来,然后将这个任务再新增一次。暂时能想到的就是这个办法,起码可以达到我想要的效果了。$cron=Task::where('type', 'xxx') ->first();$cronTab=$cron->jsonSerialize();$task= Task::create($cronTab);
您可能感兴趣的文章:
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号