php里面的文件锁
通过使用ab做并发执行的时候,发现库存减少不一致,为什么呢?
答:主要是由于并发的时候,多个php程序去操作了同一个资源,这个时候造成资源的抢夺,数据不一致。为了解决这个问题,可以使用php里面的文件锁来实现。在多个php程序操作某一个资源的时候,需要先去获取这个锁资源,只有获取到锁的程序才有权限去操作资源。当操作完成后,释放锁资源,使得别的程序能再次去抢夺锁资源
1.创建一把锁,一个文本文件,随意命名,lock.txt
$key = fopen('lock.txt','r');
do{
$lockStatus = flock($key,LOCK_EX);//获得锁
//为防止php占cpu不放
usleep(50000);//0.05s
}while(!$lockStatus);
//抢到锁的程序可以操作资源
if($lockStatus){
//为防止高并发,所有程序写在这里即可
//减一操作,多个程序去操作减一
$sql = "select * from kucun where goo_id =1";
$res = mysql_query($sql);
$data = mysql_fetch_assoc($res);
$data['kucun']--;
$sql = "update kucun set kucun = " . $data['kucun'] . "where good_id = 1";
mysql_query($sql);
echo "库存正在减少";
flock($lockStatus,LOCK_UN);//释放锁
}else{
echo "系统繁忙!";
}
fclose($key);//关闭指向的文件

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)