php 大访问量 数据重复问题

张映 发表于 2016-05-25

分类目录: php

标签:, ,

大访问量,或者受到恶意攻击的情况,数据库没有设计好,很容易产生重复数据。有三个请求,同时到达php,php同时到数据库查询,有没有数据,发现没有,同时插入3条数据。这么巧都是同时?事实确实会同时。解决办法,个人能实现的有3种。

1,通过唯一索引,联合主键限制等。例如,用户表手机号,邮箱一般都是唯一的。订单表的订单号也是唯一。

2,通过锁表。例如,现在对表进行插入操作前,php先lock表,结束后在unlock表。锁表会造成等待时间加长,特别在访问大的时候。不推荐锁表。

3,通过队列。如果三个请求同时到达php,能不能让他们依次执行呢。队列服务端监听端口,三个请求往端口发送请求,就要遵守队列的规矩了。

个人觉得,第一种方法是最好的,如果第一次方法不能满足需求,推荐第三种方法。



转载请注明
作者:海底苍鹰
地址:http://blog.51yip.com/php/1811.html/comment-page-1

1 条评论

  1. Alexander 留言

    高并发下,使用队列:redis比较好,当然,使用mysql自身的唯一属性限制,也是不错的