溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php里面的文件鎖

發布時間:2020-06-21 12:13:27 來源:網絡 閱讀:367 作者:simuls 欄目:web開發

通過使用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問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女