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

How can I do cron job with Queue Worker? (laravel 5.3)

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

我想使用教程创建一个 cron 作业,但我不知道如何实现它

我的情况是这样的:

比如我有table订单。 Table 订单有这样的字段:

  1. 状态,int(10)

  2. checkout_at,日期时间

  3. canceled_at,日期时间

我只提了几个领域

注意:

状态 = 1 -> 已收到

状态 = 2 -> 已取消

状态 = 3 -> 等待付款

我想做这样的逻辑:

如果买家在 checkout_at 后 2 小时内没有付款,请将状态更改为 "canceled" 并插入值 "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作业来调用函数?

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

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

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