如何使用 Laravel 中的任务调度?从你的经验出发,讲下哪些场景下使用到了任务调度。

请尝试在评论区里写下答案(如不能清楚表述,那么你可能没真正理解)。欢迎参与,为下一次求职做准备。

如题

摈弃世俗浮躁,追求技术精湛
Summer
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 21

任务调度文档 任务调度《Laravel 8 中文文档》

任务调度即定时任务,如文档简介所言,每次查/增/改定时任务都需要 ssh登录服务器操作 crontab,这很痛苦,而laravel的任务调度是代码控制的。只需要在 crotabcrontab -u www -e 添加 * * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1 一条定时任务即可,这条定时任务的意思是每分钟检查你所定义的任务调度有没有需要执行的。

我项目中用的更多的是 「Artisan 命令调度」
第一步php artisan make:command TestCode 会在 App\Console\Commands自动生成 TestCode.php 文件。
第二布,编辑 TestCode.php

class TestCode extends Command
{
    protected $signature = 'code:test';
    protected $description = '测试';
    public function __construct(){..折叠}
    public function handle(){
        dd(123); //你的代码
    }
}

第三步:手动测试一下排除bug

php artisan code:test
//123

第四步:在 App\Console\Kernel.php中添加

class Kernel extends ConsoleKernel
{
    protected function schedule(Schedule $schedule)
    {
        // everyMinute everyTenMinutes everyTenMinutes everyThirtyMinutes hourly dailyAt('13:00') between('8:40', '23:00') cron('1 */12 * * *')
        $schedule->command('code:test')->everyMinute();
    }
}

以上就定义了一个每分钟去打印 123 的任务调度。

场景举例如下:

  1. 每小时/每天统计一次网站数据。
  2. 每天清理一些过期没用的表数据。
  3. 定时同步某一个地方的数据保持一致。
  4. 每10分钟将发布时间大于15天的帖子自动关闭。
  5. 每分钟对用户新支付的订单去查询核实已支付状态。
  6. 当数据输入较快,而我们又需要对数据二次复杂的处理,通常先放进临时表,然后定时从临时表中取出批量处理。
  7. 当希望用户的帖子发布后,在5分钟之后才公开。
2年前 评论
Alyssa 2年前
huchao399 2年前
Alyssa 2年前
lmdfx 2年前
Alyssa 2年前
huchao399 2年前
php_yt (作者) 2年前
sodasix 2年前
自由与温暖是遥不可及的梦想

任务调度 很多地方会用到

1.数据统计

2.定时处理订单

## 任务调度 一定要 注意 按看文档 负载均衡有坑 :smirk:

2年前 评论

定时刷新 token 之类的

2年前 评论
第五焱陽

定时任务, 比如 半夜的数据自动备份 定时获取同步三方数据

2年前 评论

最近遇到定时任务导致服务器内存一直增长, 怎么去排查呢? 任务大多是请求第三方接口去查询数据写入本地数据库

2年前 评论
leihuo_emoji 2年前
王小大 (作者) 2年前

1 数据统计
2 用户状态维护
3 库存更新

2年前 评论
chowjiawei

版本更新 时 判断版本 进行不同的版本升级脚本

这个版本 订单某个字段存的 默认值是 A 升级后 需要更改为B

在集群环境下 脚本升级 尤为重要 而不是手动修改数据库 或者逻辑内 将A显示为B

2年前 评论
  • 我是重写了laravel任务调度,将定时任务列表放到数据库,方便后台增删改查,以及直接触发。
  • 场景: 比如拉取数据,结合redis sort set 做延迟队列等
2年前 评论

我司有个项目上百个定时任务 :joy: 场景无非就是定时群发 定时检测 定时统计啥的 七七八八的玩意

2年前 评论

任务调度用于定时执行某个任务,可以是同步任务或异步任务(队列)。 使用场景举例:

  1. 定时同步数据,比如定时从第三方Api读取物流数据等。
  2. 定时数据统计,比如统计即将过期的vip用户,发送短信提醒续费。
2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!