如何使用Queue Worker执行cron工作? (laravel 5.3)

时间:2017-01-09 10:44:30

标签: php laravel cron laravel-5.3 scheduling

我在这里阅读:https://laravel.com/docs/5.3/queues#running-the-queue-worker

我想使用本教程创建一个cron作业,但我很困惑如何实现它

我的情况是这样的:

例如,我有桌面订单。表顺序包含以下字段:

  1. 状态,int(10)

  2. checkout_at,datetime

  3. canceled_at,datetime

  4. 我只提了几个字段

    请注意:

    status = 1 - >接收

    status = 2 - >取消

    status = 3 - >等待付款

    我想制作这样的逻辑:

    如果买家未在checkout_at后2小时内付款,请将状态更改为“已取消”并插入值“canceled_at”

    我创建了一个这样的函数:

    public function cron_job()
    {
        $users = DB::table('orders')
                   ->select('*')
                   ->first();
    
        $checkout_at = $users->checkout_at;
        $after = strtotime("+2 hours", strtotime($checkout_at));
    
        if($checkout_at > $after) {
            DB::table('orders')
              ->where('id', $users->id)
              ->update(['status ' => 2, 'canceled_at' => date("Y-m-d H:i:s")]);
        }
    }
    

    如何通过实现上述教程来创建一个cron作业来调用该函数?

1 个答案:

答案 0 :(得分:2)

对于这类工作,您应该使用Laravel Task Sheduling。这提供了每小时(或您选择的任何其他间隔)执行脚本的选项。

$schedule->call(function () {
    // Your code
})->hourly();

但是,您需要能够在托管网站的服务器上添加cron作业。