永发信息网

PHP同时发出 重复执行

答案:2  悬赏:0  手机版
解决时间 2021-03-01 23:36
我做了一个支付接口,做了异步通知,支付成功之后 我在apache 日志查看到 支付商那边服务器 同时发出两个通知
61.164.152.48 - - [31/Jul/2016:10:59:28 +0800] "GET /zhifu.php/返回参数 HTTP/1.1" 200 22 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"
183.160.211.111 - - [31/Jul/2016:10:59:28 +0800] "GET /zhifu.php/返回参数 HTTP/1.1" 200 22 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"

时间是一模一样的,这样问题就来了,有时候充值的时候订单会重复入款,重复添加,这是为什么呢?怎么避免,也不是每次都这样,偶尔会有重复入款的,请问怎么避免?PHP那边我已经做了双重的判断,如果加过款的 就不再执行 可是还是执行了,
最佳答案
异步通知,肯定有订单号的吧,根据订单号设置一个原子锁,取得原子锁再做充值处理,否则不处理。
原子锁的方法有很多,比如创建一个空文件,文件名为订单号,创建成功就处理,创建失败就不处理。
Redis的串行机制,也可以用来做原子锁,比如 $redis->incr($key) === 1,则处理,否则不处理。
全部回答
function run() { static $is_run= false; if ( $is_run == false ) { $is_run = true; echo '执行成功'; run(); $is_run = false; // 执行完成 } else { echo '运行中,调用失败!'; } } run();
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
密斯后加一个人的姓称乎是什么意思
我需要一个答案.当你问一个男人看上你什么的
海友酒店北京南站北广场店地址在哪,我要去那
尼康D60配什么SD卡比较好?sdhc class6
QQ 520开头的九位情侣号码一对值多少钱
网上查不到的专科文凭能报考本科吗?
蛋白与酒是否可以一起吃
魅族手机如何移动程序
aoc电脑没任何东西怎么重装系统
中华全国妇联南门地址在什么地方,想过去办事
如何看待对于公司里靠领导关系进公司任职的同
DJ - 顶级欧美夜店混搭电音气氛很澎湃40秒开
【铅笔盒】铅笔盒英语单词怎么写?
上海市总工会黄浦区卢工体育场地址有知道的么
CFCDK大全
推荐资讯
下列选项正确的是B(2分)20日夜起,长江北岸
什么是配电设备
2co+o2=2co2 由于变化是 co中c为+2 co2中c为+
宝芝林大药房西安第十分公司我想知道这个在什
下列药物中,属于核苷酸类逆转录酶抑制剂的为
是什么导致国内的互联网公司普遍不能实现盈利
法院审理交通事故分两次开庭好吗?第一次部分
志公教育怎么样,广西志公教育好不好
美丫丫文体饰品店在哪里啊,我有事要去这个地
中亿投资在哪里啊,我有事要去这个地方
韦予后面叫名字好听
每日每夜NO.009我想知道这个在什么地方
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?