PHP-并发

http://www.cnitblog.com/donne/archive/2007/12/04/37319.aspx

锁的深入研究 www.mysqlpub.com/forum.php?mod=viewthread&tid=31891

抢购功能实现 http://blog.csdn.net/liangpei2008/article/details/7920397

for update研究 http://www.cnblogs.com/bigfish--/archive/2012/02/18/2356886.html

秒杀:就是怕在SELECT后与UPDATE之前有其他SELECT

1.笨方法(适用于只有物品和数量, 不能用于激活码等类似)http://blog.sina.com.cn/s/blog_6086b8450101hidf.html

  product_id, num类型(产品ID、产品剩余数量, 用户ID)

  使用UPDATE tname SET num=num-1 WHERE product_id=1 and num>0

  判断影响行数, 记录下用户的UID

2.用事务隔离级别

  严格控制事务的隔离级别, 防止一条记录SELECT后UPDATE前被别的用户脏读

3.使用 for update行锁

4.使用行锁

5.使用cache

  用Ajax请求写入到memcache中的list里, 如果list长度够了则提示失败, 如果返回成功了则跳转到另一个页面, 看看memcache中的list前n名是否有此用户, 有则提示成功, 否则提示失败

6.乐观锁机制

  set sum=sum+#increment# where id=#id#

  代替

  update 表 set sum=#sum#  where id=#id#

你可能感兴趣的:(PHP)