发布网友 发布时间:2022-04-06 03:31
共4个回答
懂视网 时间:2022-04-06 07:53
php实现自动关闭订单的方法:首先读取上次订单清理时间;然后跟当前系统时间对比,如果超过定时清理的时长,就执行清理操作;最后删除掉订单表中过期的订单即可。
推荐:《PHP视频教程》
PHP自动关闭订单 / 执行定时任务
方法一:
可以考虑在插入新订单时,触发定时清理操作.具体就是读取上次订单清理时间,然后跟当前系统时间对比,如果超过定时清理的时长(比如30分钟),就执行清理操作,删除掉订单表中过期的订单.
对于这些配置数据,可以保存在系统的配置表里,比如:
conf(conf_name, conf_value)order_last_clean_time: 1493101925
(上次订单清理时间)
order_cron_clean_time: 30分钟
(定时清理的时长)
order_expire_time: 30分钟
(超过30分钟未付款的订单视为过期)
方法二:
方案:
1;任务调度服务,加入自动执行代码来检查订单是否过期,如果过期取消;
2;linux计划任务:执行php脚本执行。原理同上
3; mysql 数据库 event 事件,每一条订单添加一个监听事件,如果支付完成事件取消。
如果没支付;按照约定的事件执行事件,取消订单;
热心网友 时间:2022-04-06 05:01
你在页脚埋一个js吧 当前台有用户访问网站的时候 都会触发这个JS 服务端 用txt文本 或这 数据库 记录一下 上次处理订单的时间 当这个js触发的时候 调用服务端的文件判断当前时间和上次时间是否有1个小时(这个可以自行设置频率 根据网站订单的量调节) 如果满足时间差了 就处理下订单表里面的 未付款订单 如果不满足 则放弃.. 这样 对服务器的压力也不是很大.... 当然 如果你还是觉得大了 就种cooke 当用户访问的时候 第一次激活js 则埋下cooke 再次触发的时候 先通过js 读取用户端的cooke 判断时间 大于某个值的时候再请求 服务端文件 否则就放弃 ....能想到的就是这么处理了追问但是如果这段时间网站没人访问,3天后访问的话,这订单就有点坑了。。只有访问网站的时候才能触发。有没有自动触发的。。追答难道你的网站 3天都不会有人访问 ?? 这也太吓人了吧 而且这个 可以是多方位的啊 你可以用其它网站来触发他或者 用 服务器的win的任务计划来触发他都可以啊
热心网友 时间:2022-04-06 06:19
这个取消订单 无非就是让他不能支付了而已,用户操作支付的时候,php date_diff函数判断时间差,如果当前服务器时间与下单时间相差3小时以上则操作数据库将该订单状态设置为取消,支付失败且给出提示,同时,在用户查看订单列表的时候也需要执行该判断。追答下订单后3小时不付款,自动取消订单 ==》 这句话的意思不就是说3小时后订单就不能支付了么变成取消状态,为什么非要在3小时候就必须操作数据库? 为什么不在用户发送请求的时候判断该订单是否已超过有效期?除非你是想实现订单被取消的时候需要主动通知用户。
热心网友 时间:2022-04-06 07:53
这个你只能是放在后台做,放在前台,用户不大可能呆在你的网站上面3个小时不动,不退出,不关闭,放在后台,单独一个页面,批量去查询3小时内未支付的订单,然后做出相应处理。。。要是LINUX的话,能写个定时器最好了。。。。追问那意思是后台那个单独页面要一直去执行?每次执行都去数据库执行下操作?那也是不小的负担啊。。要是自动最好了。。追答在linux下,使用php自动,就必须写意个服务器进程,然后由php来调用该进程来进行操作。。。WINDOW只能是计划任务了。。php来调用。