[请益] Laravel 检查资料过期的方法

楼主: q10242 (黑田祐司)   2018-09-11 12:58:50
我想要用Laravel做一个订单系统
下单之后五分钟没付钱订单就会失效
下订单会把货物数量扣除 让别人没办法下单
但是想不到该怎么实作这个功能
laravel是用apache在跑
目前想到的方法
1.写daemon 定期检查 ->缺点是无论定期间隔多久都有时间差,而且怕会影响系统效能
2.有别人下单的时候或者有人想观看剩余货物数量的时候再来检查
->感觉比1合理 但是我怕有人一直F5
3.确定付完钱之后再扣物品数量
-> 网站付款方式是先离开网站本身付款完之后再回来
在这期间有可能因为系统显示有货,让两人同时出去付钱
回来却只有一个人能有货的状况。另外一个人没货可以走退款
但是会产生手续费。
我有没有其他选择?
作者: knives   2018-09-11 13:27:00
订单成功之后,产生一个job进Queue,设定五分钟过后去检查该笔订单是否为有效订单
作者: JustGame (JustGame)   2018-09-11 13:38:00
下单后把订单内容存在 redis 里,数据库物品数量扣掉配合 redis keyspace notification 把过期单加回数据库
作者: cf1064 (蚵仔)   2018-09-12 14:29:00
下单的时候,加一个过期时间字段去记录几点几分过期
作者: qw2781728 (captain)   2018-09-21 21:21:00
把订单分状态 写排程去跑那些失效订单 看要加会库存还是怎样 大概就跟一楼说的差不多
作者: knives   2018-09-22 15:07:00
其实还有一招,连job、排程都不用,不过不保证资料一致性
作者: qw2781728 (captain)   2018-09-22 21:21:00
楼上请说
作者: liisi (小心一点)   2018-09-26 23:34:00
应该是先把数量booked住 等到失效在释放走退款流程 买家会不爽

Links booklink

Contact Us: admin [ a t ] ucptt.com