为了账号安全,请及时绑定邮箱和手机立即绑定

PHP消息队列实现及应用

Wicon PHP开发工程师
难度中级
时长 1小时14分
学习人数
综合评分9.73
65人评价 查看评价
9.8 内容实用
9.8 简洁易懂
9.6 逻辑清晰
讲得很好!十分感谢!
`created_at` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '订单创建的时间',
`updated_at` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '处理完成的时间',
`status` tinyint(2) NOT NULL COMMENT '当前状态,0未处理,1已处理,2处理中',
PRIMARY key (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
拿走不谢
create table `order_queue`(
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id号',
`order_id` int(11) NOT NULL,
`mobile` varchar(20) NOT NULL COMMENT '用户手机号',
视频里的代码只能实现削峰,但是没有实现锁,这样判断在高并发的情况下 ,肯定会出现超卖的情况,因为如果同时有100个进程执行了$resdis->lLen($resdis_name)<10,都是返回true的。
建议使用decr方式,实现原子性的判断
感谢老师的分享
老师的教程只是提供一个思路,真实的场景如果另外一个程序一直在循环取redis队列中的数据,在高并发的情况下肯定会出现超卖情况,那么可以在用户秒杀结束redis队列中数据达到秒杀人数后,关闭前台页面中的秒杀按钮,点击购买不再执行购买程序提示秒杀结束,然后再redis列中取数据->插入mysql->下订单等等逻辑操作,个人理解不喜勿喷
太牛逼了老师!赞 一万个赞!!!!!

已采纳回答 / subarashiigyoku
开始->附件->运行->输入:taskschd.msc打开任务计划程序。登录你要的脚本,根据需要设置类似触发器什么的。
老师讲得不错,有用

最新回答 / 921231
在操作数据库时除查询外的所有操作都是会加排它锁的,所以如果在修改时有插入的话一般来说是不会有一些的,除非表被加排他锁,会进入等待,超过等待时间就回滚。
就在还秒杀?
即使用redis 其实也会有数据丢失的危险。
redis 持久化方式有两种 AOF&RDB。
因为数据从内存同步到磁盘是需要时间差的。
额,讲得不错,感觉通俗易懂,就是太摸了
好!很有用,非常感谢
此处的死循环是几s才执行一次 而那个秒杀几乎是同一秒完成的 所以看不出队列长度的变化..
读写是同时进行的,长度不是固定不变的,这个问题很关键,不能忽视啊
课程须知
1.掌握PHP基础知识 2.使用过Redis技术做缓存 3.有简单的Linux命令基础,如cd、sudo、apt、Vim
老师告诉你能学到什么?
1.队列是个什么东西,他能干什么 2.队列的应用场景有哪些 3.如何使用队列对业务进行解耦 4.如何使用Redis队列来消除高压力 5.专业的队列系统RabbitMQ如何来使用 课程所需库文件:http://pan.baidu.com/s/1bQg038

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消