千家信息网

Laravel中怎么实现定时发布任务

发表于:2025-01-25 作者:千家信息网编辑
千家信息网最后更新 2025年01月25日,今天就跟大家聊聊有关Laravel中怎么实现定时发布任务,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、利用Linux的cronTab功能(
千家信息网最后更新 2025年01月25日Laravel中怎么实现定时发布任务

今天就跟大家聊聊有关Laravel中怎么实现定时发布任务,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

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中怎么实现定时发布任务有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

任务 文件 内容 就是 方法 输入 命令 办法 参数 效果 服务器 目录 服务 代码 位置 同时 路径 项目 明显 清楚 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 阿里服务器怎么联系 软件开发 笔记本配置要求 服务周到的服务器租用 安卓软件开发用哪个工具好 思茅云南众福互联网科技有限公司 在数据库中怎么创建表格结构 太原互联网科技园 软件开发怎么找团队 大部分软件开发都是失败的 云服务器ecs后台管理 专转本数据库系统 25000软件开发文档 韩国便宜的服务器 电信网络安全证书 华为公司网络安全治理结构 商用网络技术问题由客户支持 软件开发毕业论文 哈尔滨erp软件开发需要多少钱 网络安全快一步短视频 计算机网络技术 百度云 服务器端的编程实战经验 我的世界服务器金钱数量怎么设置 华勤应用软件开发题 北京数科网络技术有限责任公司 原神不是一个服务器能玩吗 内测服务器 龙啸苍穹 龙门飞甲 南通游戏软件开发人才招聘 计算机网络技术 百度云 关于网络安全的手抄报彩铅 无线网络技术发展前景论文
0