请问,ecshop程序(php内核)怎么来实现 下订单后3小时不付款,自动取消订单 这样的实现思路 求解答!目前知道的几种思路:
1) js+ajax 来触发 页面是静态的 如果关闭这个页面的话 setInterval 就不会执行 =>不可行
2) window任务 服务器是linux的
谁能提供一下思路呀!谢谢,求解答。。在线等
你在页脚埋一个js吧 当前台有用户访问网站的时候 都会触发这个JS 服务端 用txt文本 或这 数据库 记录一下 上次处理订单的时间 当这个js触发的时候 调用服务端的文件判断当前时间和上次时间是否有1个小时(这个可以自行设置频率 根据网站订单的量调节) 如果满足时间差了 就处理下订单表里面的 未付款订单 如果不满足 则放弃.. 这样 对服务器的压力也不是很大.... 当然 如果你还是觉得大了 就种cooke 当用户访问的时候 第一次激活js 则埋下cooke 再次触发的时候 先通过js 读取用户端的cooke 判断时间 大于某个值的时候再请求 服务端文件 否则就放弃 ....能想到的就是这么处理了追问
但是如果这段时间网站没人访问,3天后访问的话,这订单就有点坑了。。只有访问网站的时候才能触发。有没有自动触发的。。
追答难道你的网站 3天都不会有人访问 ?? 这也太吓人了吧 而且这个 可以是多方位的啊 你可以用其它网站来触发他或者 用 服务器的win的任务计划来触发他都可以啊
温馨提示:答案为网友推荐,仅供参考
第1个回答 2013-10-23
这个取消订单 无非就是让他不能支付了而已,用户操作支付的时候,php date_diff函数判断时间差,如果当前服务器时间与下单时间相差3小时以上则操作数据库将该订单状态设置为取消,支付失败且给出提示,同时,在用户查看订单列表的时候也需要执行该判断。
这个逻辑与订票之类的网站都类似,就是在你提交订单后会给出提示请在XX分钟内完成支付。
你说的ajax的监控不可靠,而且很费资源,对于购物类的站点不需要这样。追问
这个逻辑与订票之类的网站都类似,就是在你提交订单后会给出提示请在XX分钟内完成支付。
你说的ajax的监控不可靠,而且很费资源,对于购物类的站点不需要这样。追问
这个还是手动去触发。。我想实现的是 让它自动来触发,去判断时间差。
追答下订单后3小时不付款,自动取消订单 ==》 这句话的意思不就是说3小时后订单就不能支付了么变成取消状态,为什么非要在3小时候就必须操作数据库? 为什么不在用户发送请求的时候判断该订单是否已超过有效期?除非你是想实现订单被取消的时候需要主动通知用户。
本回答被提问者采纳第2个回答 2013-10-22
这个你只能是放在后台做,放在前台,用户不大可能呆在你的网站上面3个小时不动,不退出,不关闭,放在后台,单独一个页面,批量去查询3小时内未支付的订单,然后做出相应处理。。。要是LINUX的话,能写个定时器最好了。。。。追问
那意思是后台那个单独页面要一直去执行?每次执行都去数据库执行下操作?那也是不小的负担啊。。要是自动最好了。。
追答在linux下,使用php自动,就必须写意个服务器进程,然后由php来调用该进程来进行操作。。。WINDOW只能是计划任务了。。php来调用。