用文件锁排他锁实现商品秒杀、抢购

在处理下单请求的时候,用flock锁定一个文件,如果锁定失败说明有其他订单正在处理,此时要么等待要么直接提示用户"服务器繁忙",计数器存储抢购的商品数量,避免查询数据库。

阻塞(等待)模式:并发时,当有第二个用户请求时,会等待第一个用户请求完成、释放锁,获得文件锁之后,程序才会继续运行下去

=1){
		//处理订单 
		$number--;
	}else{
		//商品已经抢购完
	}
	flock($fp, LOCK_UN); //释放锁

}
fclose($fp);
?>
非阻塞模式:并发时,第一个用户请求,拿得文件锁之后。后面请求的用户直接返回系统繁忙,请稍后再试

=1){
		//处理订单 
		$number--;
	}else{
		//商品已经抢购完
	}
	flock($fp, LOCK_UN);//释放锁

}else{
   //系统繁忙,请稍后再试
}
fclose($fp);
?>



你可能感兴趣的:(php)