任务调度--处理订单过期时间

66 篇文章 4 订阅

启动调度器

使用这个调度器时,只需要把下面的 Cron 条目添加到你的服务器中。如果你不知道如何在服务器中添加 Cron 条目

首先执行

crontab -e

然后将这个添加到里面
/home/vagrant/code/showApi是绝对路径

* * * * * php /home/vagrant/code/showApi/artisan schedule:run >> /dev/null 2>&1

在这里插入图片描述
就是说,在Linux系统中该 Cron 会每分钟调用一次 Laravel 的命令行调度器。
在执行 schedule:run 命令时,Laravel 会根据你的调度执行预定的程序。

定义调度

可以在 App\Console\Kernel 类的 schedule 方法中定义所有的调度任务。

 //定时检测订单状态,超过十分钟未支付的,作废
        //在真实的项目中,不会这么做,真实的项目一般会使用长链接,订单过期,直接作废
        $schedule->call(function () {
            //查询状态为1并且时间不超过1分钟的订单
            $orders = Order::where('status', 1)
                ->where('created_at', '<', date('Y-m-d H:i:s', time() - 600))
                ->with('orderDetails.goods')
                ->get();
            //循环订单,修改订单状态,还原商品库存
            try {
                DB::beginTransaction();//开启事务
                foreach ($orders as $order) {
                    $order->status = 5;//修改订单状态
                    $order->save();
                    //还原商品库存
                    foreach ($order->orderDetails as $details) {
                        $details->goods->increment('stock', $details->num);
                    }
                }
                DB::commit();//提交事务
            } catch (\Exception $e) {
                Log::error($e);
            }
        })->everyMinute();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小信啊啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值