php 未支付取消订单,【php】用户提交订单,30分钟后没付款取消订单功能分析

2023-11-05

我先在要做这样的功能:

用户在创建订单后,订单表中记入的是未付款状态,如果用户在30分钟后,还未付款,然后就把该订单给取消。

关于用户创建订单,30分钟后还没付款,取消该订单的逻辑是怎么实现的。

我自己的想了两个方案:

(1):客户端记入这个订单,如果在30分钟后还没有付款,就发送一个请求,调用后台的接口,来取消这个订单。

(2):服务端写个脚本,然后crontab来执行,来监控在30分钟还没有付款的订单,如果有就取消订单。

各位大神,这是我想到的两个方案,不知道合不合适,求大神们指点指点,感激不尽。

回答

不知道你的客户端是什么,但是方案1很依赖客户端,订单决策不应该由客户端发起

方案2的话就要考虑你的执行密度,要知道每时每刻都会有新订单发起的,每时每刻也会有订单过期。

用一些成熟的带TTL控制的方案吧,比如redis。

我之前的做法是在每次查询这个订单时候检查过期,被动过期。

比如,查询订单细节时,再去检查是否过期然后再处理。

当然,如果这条数据不被访问可能永远不会过期,直到有人访问它。

有点像薛定谔的猫,在你打开盒子(检查订单)之后,才知道它是否过期。所以叫被动过期

创建订单后,放个30分钟执行的任务到工作队列。

补充一:

工作队列具体流程:

用户创建订单A

生成30分钟后执行的任务&#x

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

php 未支付取消订单,【php】用户提交订单,30分钟后没付款取消订单功能分析 的相关文章

  • 2 天:我用文字 AI-ChatGPT 写了绘画 AI-Stable Diffusion 跨平台绘画应用

    文本 AI ChatGPT 和绘画 AI Stable Diffusion 平地惊雷 突然进入寻常百姓家 如果时间可以快进 未来的人们对于我们这段时光的历史评价 大概会说 当时的人们在短时间连续经历了这几种情感 从不信 去试试看 到远超预期
  • 【hibernate实例】单项多对一增加查找

    创建部门表department 创建雇员表employee 新建持久化类 Department java package www hbsi net many2one public class Department private Integ
  • Android中EditText光标的显示与隐藏方法

    目录 Android EditText的光标的显示和隐藏 Android之第一次不显示EditText光标 总结 Android EditText的光标的显示和隐藏 一 java代码 1 编辑框的光标 显示的方法 1 editText se
  • QML HTTP 请求

    作者 一去 二三里 个人微信号 iwaleon 微信公众号 高效程序员 在 Web 开发中 实现与服务器的通信至关重要 其中 HTTP 便是最常用的方式之一 它是一种客户端 服务器协议 客户端向服务器发送请求 服务器则返回响应 常被用于在浏
  • 树莓派4B(armv7l,arm32)buster安装 Qt5、Eigen 3.4.0、OpenCV 4.5.5、ncnn

    经过长时间尝试 目前确定使用树莓派Raspberry Pi OS 32位 buster 的 Legacy 版本 64位和32位的 bullseye 都用过了 发现还是对现有的包支持的不够好 现在从头开始 希望为时不晚 Raspberry P
  • Ubuntu20.04 安装Anaconda相关记录【换源】【指令】【关闭默认环境】

    打开终端默认使用base环境时关闭base环境 在安装了ubuntu20 04版之后因为使用原因需要在环境中安装Anaconda 参照了网上的安装方式之后发现打开终端的时候会默认打开conda的base环境 应为要安装ROS使用 默认环境使
  • java高并发处理 java处理高并发的几种方法

    一 背景综述 并发就是可以使用多个线程或进程 同时处理 就是并发 不同的操作 高并发的时候就是有很多用户在访问 导致系统数据不正确 糗事数据的现象 对于一些大型网站 比如门户网站 在面对大量用户访问 高并发请求方面 基本的解决方案集中在这样
  • Dubbo分布式日志追踪,多线程不能获取窜ID和IP问题

    接着上一篇日志 当用MDC或者ThreadContext来put或者get数据的时候 不同线程是获取不到的 他们都是ThreadLocal维护 所以线程独立 如果需要子线程获取则将参数传入 在Thread的run方法执行的时候将传入的ID和
  • Ubuntu & CentOS配置JAVA JDK环境

    Linux配置Java JDK 环境 下载地址 https www oracle com technetwork java javase downloads jdk8 downloads 2133151 html 根据系统相应版本进行下载
  • 程序流程图

    程序流程图又称程序框图 是以特定图形符号外加文字说明描述程序运行具体步骤的图示 它结合相应的算法 经由处理框 判断框 起止框 连接点 流程线等构成整个流程图 在工作过程中 流程图主要是说明某一特定过程 尤其对于产品经理和交互设计师来说 学会
  • Qt Creator登录对话框

    实现功能 在弹出对话框中填写用户名和密码 按下登录按钮 如果用户名和密码均正确则进入主窗口 如果有错则弹出警告对话框 实现原理 通过上节的多窗口原理实现由登录对话框进入主窗口 而用户名和密码可以用if语句进行判断 实现过程 1 先新建Qt4
  • 基于D-S证据理论的数据融合研究与应用

    1 课题背景及研究的目的和意义 1 1课题背景 证据理论源于20世纪60年代美国哈弗大学的数学家A P Dempster 利用上 下概率来解决多值映射问题方面的研究工作 后来他的学生G Shafer对证据理论引入了信任函数和似然函数的概念
  • 指针数组——元素为指针的数组

    说明 指针数组就是一个数组 这个数组的数组单元都是指针型数据 定义 int a 6 1 2 3 4 5 6 int p 6 数据类型符 变量名 常量表达式 用法 for i 0 i lt 6 i p i a i 就是一个元素为指针的数组 注
  • CTF比赛中常见的MISC解题方法(不涉及内存取证和流量分析)仅供菜鸟,大佬绕道

    我们在ctf比赛中 大多数时候签到题都是misc 会不会有小伙伴因为签到题而感到头痛 其实misc的签到题是非常简单的 不然怎么可能叫签到 好吧 废话不多说 直接说干货 1 题目直接给了编码 比如 前几天的第一届 长城杯 的misc签到题
  • 单片机学习 7-IO拓展(串转并)-74HC595

    I O拓展 串转并 74HC595芯片介绍 上面两张都是 74HC595 芯片管脚图 左侧的 1 脚是 QB 而右侧芯片的 1 脚是 Q1 左侧芯片的 11 脚是 SCK 而右侧芯片的 11 脚是 SH CP 还有很多其他管脚不一样 其实这
  • 【Linux命令详解

    文章标题 简介 一 参数列表 二 使用介绍 1 pwd命令的基本使用 2 pwd命令中的参数 3 pwd命令的工作机制 4 pwd命令的实际应用 总结 简介 pwd命令是Linux中的基础命令之一 使用该命令可以快速查看当前工作目录 在掌握
  • go 实现结构体的复制

    go 将一个结构体里面的数据全部复制到另一个结构体 import reflect func DeepFields ifaceType reflect Type reflect StructField var fields reflect S
  • KEIL Real view MDK中插入空操作NOP

    折腾了大半天 才搞明白一个空操作的指令 先在网上查有的说是 asm NOP 从intrins h里调用 可犄角旮旯全找了 也没看到什么intrint h的文件 如果直接用 就出现 error 1113 Inline assembler no
  • git获取本地用户名和密码命令

    1 查看本地 Git 配置文件 在使用 Git 的过程中 用户的用户名和邮箱地址都会被保存在本地 Git 配置文件中 因此 可以通过查看该配置文件来获取用户名和密码 打开 Git Bash 或者终端窗口 输入以下命令 查看用户名 git c

随机推荐