相關(guān)關(guān)鍵詞
關(guān)于我們
最新文章
- PHP中opcode緩存簡單用法分析
- thinkPHP控制器變量在模板中的顯示方法示例
- PHP move_uploaded_file() 函數(shù)(將上傳的文件移動(dòng)到新位置)
- dirname(__FILE__)的含義和應(yīng)用說明
- thinkPHP5框架實(shí)現(xiàn)分頁查詢功能的方法示例
- PHP中單雙號與變量
- PHP獲得當(dāng)日零點(diǎn)時(shí)間戳的方法分析
- Laravel ORM對Model::find方法進(jìn)行緩存示例詳解
- PHP讀寫文件高并發(fā)處理操作實(shí)例詳解
- 【CLI】利用Curl下載文件實(shí)時(shí)進(jìn)度條顯示的實(shí)現(xiàn)
PHP使用文件鎖解決高并發(fā)問題示例
本文實(shí)例講述了PHP使用文件鎖解決高并發(fā)問題。分享給大家供大家參考,具體如下:
新建一個(gè).txt文件,文件中什么都不用寫。
【一】.阻塞(等待)模式:(只要有其他進(jìn)程已經(jīng)加鎖文件,當(dāng)前進(jìn)程會(huì)一直等其他進(jìn)程解鎖文件)
<?php //連接數(shù)據(jù)庫 $con=mysqli_connect("192.168.2.186","root","root","test"); //查詢商品數(shù)量是否大于0,大于0才能下單,并減少庫存 $fp = fopen("lock.txt", "r"); //加鎖 if(flock($fp,LOCK_EX)) { $res=mysqli_fetch_assoc(mysqli_query($con,'SELECT total FROM shop WHERE id=1 LIMIT 1')); if($res['total']>0){mysqli_query($con,'UPDATE shop SET total=total-1 WHERE id=1');} //執(zhí)行完成解鎖 flock($fp,LOCK_UN); } //關(guān)閉文件 fclose($fp); unset($res); mysqli_close($con); ?>