_zzq
2019-09-21 15:46
老实, 帮忙问一个问题, 因为 消费队列一直在执行过程中,当我添加了一个队列后, 后台立即消费了, 那前台程序获取队列总数的时候就少了一个, 这个情况会出现吗? 一般如何解决啊?
视频中采用for循环测试,这个是有序的,所以不会出现超卖现象;如果并发测试的话,会出现超卖现象;这里提供一个解决思路:活动前定义一个长度为10的list;利用lpop的原子性可以保障不会超卖;就是每次请求先lpop,如果可以获取到值,表示秒杀成功;获取不到说明已抢完。
可以通过设置一个const常量解决吧,常量初始值为0,有数据入队时常量值++,通过判断常量的值控制秒杀数量,这样消费者消费队列并不会影响统计秒杀数量
PHP消息队列实现及应用
32730 学习 · 58 问题
相似问题