我在这里阅读:https://laravel.com/docs/5.3/queues#running-the-queue-worker
我想使用本教程创建一个cron作业,但我很困惑如何实现它
我的情况是这样的:
例如,我有桌面订单。表顺序包含以下字段:
状态,int(10)
checkout_at,datetime
canceled_at,datetime
我只提了几个字段
请注意:
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作业来调用该函数?
答案 0 :(得分:2)
对于这类工作,您应该使用Laravel Task Sheduling。这提供了每小时(或您选择的任何其他间隔)执行脚本的选项。
$schedule->call(function () {
// Your code
})->hourly();
但是,您需要能够在托管网站的服务器上添加cron作业。