ecshop程序(php内核)怎么来实现 下订单后3小时不付款,自动取消订单

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ecshop程序(php内核)怎么来实现 下订单后3小时不付款,自动取消订单相关的知识,希望对你有一定的参考价值。

请问,ecshop程序(php内核)怎么来实现 下订单后3小时不付款,自动取消订单 这样的实现思路 求解答!目前知道的几种思路:
1) js+ajax 来触发 页面是静态的 如果关闭这个页面的话 setInterval 就不会执行 =>不可行
2) window任务 服务器是linux的
谁能提供一下思路呀!谢谢,求解答。。在线等

你在页脚埋一个js吧 当前台有用户访问网站的时候 都会触发这个JS 服务端 用txt文本 或这 数据库 记录一下 上次处理订单的时间 当这个js触发的时候 调用服务端的文件判断当前时间和上次时间是否有1个小时(这个可以自行设置频率 根据网站订单的量调节) 如果满足时间差了 就处理下订单表里面的 未付款订单 如果不满足 则放弃.. 这样 对服务器的压力也不是很大.... 当然 如果你还是觉得大了 就种cooke 当用户访问的时候 第一次激活js 则埋下cooke 再次触发的时候 先通过js 读取用户端的cooke 判断时间 大于某个值的时候再请求 服务端文件 否则就放弃 ....能想到的就是这么处理了追问

但是如果这段时间网站没人访问,3天后访问的话,这订单就有点坑了。。只有访问网站的时候才能触发。有没有自动触发的。。

追答

难道你的网站 3天都不会有人访问 ?? 这也太吓人了吧 而且这个 可以是多方位的啊 你可以用其它网站来触发他或者 用 服务器的win的任务计划来触发他都可以啊

参考技术A 这个取消订单 无非就是让他不能支付了而已,用户操作支付的时候,php date_diff函数判断时间差,如果当前服务器时间与下单时间相差3小时以上则操作数据库将该订单状态设置为取消,支付失败且给出提示,同时,在用户查看订单列表的时候也需要执行该判断。
这个逻辑与订票之类的网站都类似,就是在你提交订单后会给出提示请在XX分钟内完成支付。

你说的ajax的监控不可靠,而且很费资源,对于购物类的站点不需要这样。追问

这个还是手动去触发。。我想实现的是 让它自动来触发,去判断时间差。

追答

下订单后3小时不付款,自动取消订单 ==》 这句话的意思不就是说3小时后订单就不能支付了么变成取消状态,为什么非要在3小时候就必须操作数据库? 为什么不在用户发送请求的时候判断该订单是否已超过有效期?除非你是想实现订单被取消的时候需要主动通知用户。

本回答被提问者采纳
参考技术B 这个你只能是放在后台做,放在前台,用户不大可能呆在你的网站上面3个小时不动,不退出,不关闭,放在后台,单独一个页面,批量去查询3小时内未支付的订单,然后做出相应处理。。。要是LINUX的话,能写个定时器最好了。。。。追问

那意思是后台那个单独页面要一直去执行?每次执行都去数据库执行下操作?那也是不小的负担啊。。要是自动最好了。。

追答

在linux下,使用php自动,就必须写意个服务器进程,然后由php来调用该进程来进行操作。。。WINDOW只能是计划任务了。。php来调用。

linux下怎么实现内核态和用户空间进程共享内存

参考技术A 简单理解为:内核空间是内核使用,用户空间是应用程序使用;除非编译内核要考虑内核空间,其余情况都可以按照用户空间处理

以上是关于ecshop程序(php内核)怎么来实现 下订单后3小时不付款,自动取消订单的主要内容,如果未能解决你的问题,请参考以下文章

阿里云提示ecshop Discuz uc.key泄露导致代码注入漏洞修复

怎么去掉powered by ecshop

ecshop怎么让分类页显示当前顶级分类的所有子分类?

ecshop整合ucenter后手机无法注册,提示手机号码已存在

ECSHOP快递物流单号查询插件

如何禁用ECSHOP缓存,如何关闭ECSHOP缓存