使用sleep函数解决定时删除未支付订单探讨

php中文网
发布: 2016-06-23 13:40:39
原创
1777人浏览过

电子商务网站购买商品生成订单之后一般都会有一个支付时效的问题
用户下单之后,一定时间内未支付订单,则取消订单,并释放订单中占用的商品剩余数量
搜集了一下网上的资料,大体有以下几种方法
1)Mysql 5.1以后可以创建定时器
2) 专门写一个删除订单的php页面,在服务器端创建定时任务:php removeExpiredOrders.php
3)用户在显示订单的时候,更新订单状态

由于本人并不是太懂mysql定时器和如何创建定时任务,方法1)和方法2)暂时pass
方法3)由于无法释放订单占用的商品剩余数量pass

然后我就在想,是否可以在用户确认生成订单的同时curl一个checkpay.php页面
在checkpay.php中
sleep(2*3600);//设定支付时效为2个小时
if(order['status']==0){
    /*******删除该失效订单并释放占用的剩余商品数量******/
}

1.curl可以设定超时的时间,调用curl的页面不用等待sleep页面的执行结果
2.checkpay.php无页面输出代码,仅仅是操作数据库的代码,在网上搜得这种情况sleep函数占用的系统资源并不多

现在想探讨一下这种方法实现定时处理失效订单的方法是否可行,有没有不妥的地方也希望大神能够指正

AppMall应用商店
AppMall应用商店

AI应用商店,提供即时交付、按需付费的人工智能应用服务

AppMall应用商店 56
查看详情 AppMall应用商店

回复讨论(解决方案)

sleep 只是挂起当前程序若干秒
无论使用户还是 web 服务器都不会白白等你 2小时
所以是不可行的

虽然 mysql5.1 以上有定时器,但是你可能不会(不想)用,再者真实的运行环境中的 mysql 可能并不到 5.1
使用操作系统的定时任务的话,你可能没有权限
至于方法3的“无法释放订单占用的商品剩余数量”是想当然了,既然能删除订单,那就能回收占用

最可能的方法是:在生成需要显示剩余数量的页面时,调用订单回收程序

谢谢版主大大的耐心讲解,如同版主所说,在需要显示剩余数量的页面回收剩余商品,为最优解~

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门推荐
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号