Laravel——自定义命令command

栏目: 编程语言 · PHP · 发布时间: 6年前

内容简介:今天做商城项目的时候,需要将用户的待付款订单一个小时后自动取消。那么这个操作,不可能是人为的,只能借助整体思路:首先,在

今天做商城项目的时候,需要将用户的待付款订单一个小时后自动取消。那么这个操作,不可能是人为的,只能借助 linuxcron 来进行做定时任务了。

整体思路:

首先,在 Order 模型里写一个 public 方法,将查询到的半个小时之外还没付款的订单,将其状态全部改为 已取消的状态。

其次,自定义命令,执行该方法。

最后呢,就是将其命令注册到调度任务里自动执行即可。

  1. 编写public cancelUnpaidOrder的方法

// 在Order模型里
public function cancelUnpaidOrder() {
    self::where('status', 1)
        ->where('created_at', '<=', date('Y-m-d H:i:s',time() - 30 * 60))
        ->update(['status' => 0]);//我这里的状态为0  就是代表取消订单
        
    //清除缓存(一般做了缓存的这里得清除一下)
    Cache::forget('status_counts_'.Auth::id());
    Cache::forget('count_all'.Auth::id());    
}
  1. 自定义命令

首先跑以下生成命令类

php artisan make:command CancelUnpaidOrder --command=asshop:cancel-unpaid-order

执行完,之后就可以打开生成的类文件 app\CancelUnpaidOrder.php

<?php

namespace App\Console\Commands;

use App\Models\Shop\Order;
use Illuminate\Console\Command;

class CancelUnpaidOrder extends Command
{   // 供我们调用命令
    protected $signature = 'asshop:cancel-unpaid-order';
    // 命令的描述
    protected $description = '定时自动取消待付款订单';
    
    // 最终执行的方法
    public function handle(Order $order)
    {
        // 在命令行打印一行信息
        $this->info("开始查找...");
        $order->cancelUnpaidOrder();
        $this->info("执行成功!");
    }
}

然后执行下面命令就能执行编写的方法。

php artisan larabbs:cancel-unpaid-order
  1. 注册到调度任务

更新 app/Console/Kernel.php

<?php
.
.
.
class Kernel extends ConsoleKernel
{
    .
    .
    .
    protected function schedule(Schedule $schedule)
    {
        // 一小时执行一次『活跃用户』数据生成的命令
         $schedule->command('asshop:cancel-unpaid-order')->everyMinute();
    }
    .
    .
    .
}
  1. 利用 linuxcron 进行定时执行

//编辑crontab
export EDITOR=vi && crontab -e

添加你的命令到crontab里 ,写自己的 php 路径 和项目的路径~

* * * * * /www/server/php/72/bin/php /www/wwwroot/asshop/artisan schedule:run >> /dev/null 2>&1

千万要注意一定要用绝对路径哟~表示踩坑过来的。

大功告成~


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Approximation Algorithms

Approximation Algorithms

Vijay V. Vazirani / Springer / 2001-07-02 / USD 54.95

'This book covers the dominant theoretical approaches to the approximate solution of hard combinatorial optimization and enumeration problems. It contains elegant combinatorial theory, useful and inte......一起来看看 《Approximation Algorithms》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器