700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > TP6订单待支付超时自动取消

TP6订单待支付超时自动取消

时间:2022-03-20 15:01:12

相关推荐

TP6订单待支付超时自动取消

1:安装redis

2:安装think-queue

composer require topthink/think-queue

3:设置配置文件,使用redis进行存储,文件位置config/queue.php

return ['default'=> 'redis','connections' => ['sync'=> ['type' => 'sync',],'database' => ['type' => 'database','queue'=> 'default','table'=> 'jobs','connection' => null,],'redis' => ['type' => 'redis','queue'=> 'default','host' => '127.0.0.1','port' => 6379,'password' => '','select'=> 0,'timeout' => 0,'persistent' => false,],],'failed'=> ['type' => 'none','table' => 'failed_jobs',],];

4:app目录下新建queue文件夹,文件夹下新建Order.php处理类

//订单超时取消public function overdue(Job $job,$order_no){$order = OrderModel::get($order_no,1); //校验当前订单是否为待支付状态if($order->isEmpty()){$job->delete(); //非待支付状态,删除执行} else {$result = OrderModel::overtime($order_no); //更新订单状态为已过期if($result){$job->delete(); //更新过期成功,删除执行} else {if ($job->attempts() > 3) {$job->delete(); //累计执行3次均失败,删除执行}else{$job->release(10); //间隔10秒执行一次}}}}

5:订单生成成功后调用延时队列

use think\facade\Queue;public static function createOrder(){$order = ...//执行订单生成存储 Queue::later(30 * 60,'app\queue\Order@overdue',$order['order_no']); //加入队列,并延迟30分钟执行}

6:生成订单后查看redis队列是否存在新订单数据

7:到期执行订单状态修改

8:宝塔环境添加进程守护

安装supervisord管理器

添加进程守护管理

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。