日期:2014-05-17  浏览次数:20603 次

php中如何防止向同一地址同一时间多个请求同时提交
如题,举个例子,有个方法,里面逻辑大概如下:


function test(){
  $a = $db->query('...');//返回1或0
  if($a == 1){
  $db->set(0);//更新后下次执行此方法$a不再会是1.
  //这里是其它逻辑,问题是,如果很多请求同时调用此方法,而此方法中的set过程又稍长,那么这里的逻辑就会被执行多次,与预计的只能执行一次是不符的。
  }
}


请问大家一般怎么处理这种情况?对于投票或者跟奖品等安全性要求较高时这种情况很多。
如果用session的话请求可能来自不同的ip,如果用memcached之类的缓存保存状态,同样是有网络延迟的,shmop?求高见。

------解决方案--------------------
终了!
你是神级思维的人!我们这种人是猜不到你所想你所求,当你完成你的大作一定要给我们这些凡夫之人看看呀。。