其实解决高并发并不难有很多种解决方案 文件锁就是其中一种
你需要先了解一下什么是文件锁 百度一大堆这里就不细说了
首先说一下原理:
高并发无非就是多人同时请求一条数据 而数据库反应不过来造成多个同样的数据,这个问题很大
而利用文件锁解决高并发只需要利用独占锁与(非阻塞:看你个人或者业务)
先利用一个文件 设置一个独占锁 每次一个请求便锁上 非阻塞可以使后面的数据发现有独占锁是便停止请求 代码附上(记得添加上事务,事务很重要):
header("content-type:text/html;charset=utf8");
$link = mysqli_connect("127.0.0.1","root","root","comm");
$fp = fopen("lock.txt", "a");
if(flock($fp,LOCK_EX | LOCK_NB)){ //设置独占锁 添加非阻塞
mysqli_query($link,'START TRANSACTION');//开启事务
$id = $_GET["id"]; //商品id
$sql = "select * from commodity where id = '{$id}'";
$data = mysqli_fetch_assoc(mysqli_query($link,$sql));
$num = $data["num"]; //查询商品库存
if ($num <= 0){ //判断库存是否还有剩余
echo json_encode(["code"=>2,"msg"=>"商品已经被抢购完了!"]);
}else{
$num -=