Heim > Fragen und Antworten > Hauptteil
用ecshop搭建的商城,有个需求,用户下的订单需要限制两个小时内支付,如果未支付则取消订单。
本来想的是做一个cron定时扫脚本,可这不是长久之计,但是php不像java有多线程。
试问该如何实现呢?
伊谢尔伦2017-04-10 15:32:29
php是触发式的,
也就是说,你先保存订单生成的时间戳,状态字段为0,
到支付页面的时候,判断超时没有,如果超时,就把状态改成-1,给出超时提示,
如果没有超时,就支付,把状态改成1,如果支付成功,就把状态改成2。
搞不懂为啥要用crontab。
PHPz2017-04-10 15:32:29
这个限时两小时内支付,按正常需求来说这个并不一定要特别准时吧,上下差个几分钟还是没关系的吧。
那就写个job,每5分钟去跑一次。
直接用计划任务呗。
怪我咯2017-04-10 15:32:29
比较粗暴:
做个clear_ord.php 做个url_write 变成clear_ord.js
入口页面加个random,随机概率低点,看用户访问量
优雅:
redis,memcache都可以解决
大家讲道理2017-04-10 15:32:29
数据库字段加个创建订单的时间戳,看你自己需求也可以设置过期时间戳(创建订单时间戳+2个小时的时间戳),然后读取订单的时候判断当前时间戳跟数据库的时间戳的差值就可以了。不用定时跑任务啥的。很多系统都是这么搞的