问一个关于时间控制的典型有关问题

WBOY
풀어 주다: 2016-06-13 13:20:54
원래의
825명이 탐색했습니다.

问一个关于时间控制的典型问题
业务关于一个抢先发言的问题,假设有1000个用户,5秒钟内抢先发言,且只能有一个人发言;5秒后谁也不能发言
由于客户要求,不能使用session

我是这样处理的
数据库中建立一个发言表tableWords,如果有第一个用户要抢先发言则,添加一条记录,之后其他的用户在抢发言,如果表中有记录,则不让发言;

这样做似乎没有问题,但考虑到并发的情况,很有可能1000个用户中有多个人在同一毫秒都执行了insert 操作,,如何只让一个用户insert了?


------解决方案--------------------
你的这个担忧是多余的
哪怕是同一微秒这1000个用户都发出了请求,在第一时刻也只有一个用户的请求被响应,其他的只是在排队
------解决方案--------------------
事务 文件锁 信号量锁等,用来判断用户发言资格


还可以依靠数据库唯一索引,字段可以由话题id?等指定,总之要唯一,显然这样就符合你的需求了

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿