婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > PHP使用文件鎖解決高并發(fā)問題示例

PHP使用文件鎖解決高并發(fā)問題示例

熱門標(biāo)簽:寧波外呼營銷系統(tǒng) 地圖標(biāo)注專員怎么樣 福建銀行智能外呼系統(tǒng)價格 四川保險(xiǎn)智能外呼系統(tǒng)供應(yīng)商 長沙做地圖標(biāo)注公司 遼寧ai電銷機(jī)器人價格 房產(chǎn)中介用的是什么外呼系統(tǒng) 上海做外呼線路的通信公司 電話機(jī)器人銷售主要負(fù)責(zé)什么

本文實(shí)例講述了PHP使用文件鎖解決高并發(fā)問題。分享給大家供大家參考,具體如下:

新建一個.txt文件,文件中什么都不用寫。

【一】.阻塞(等待)模式:(只要有其他進(jìn)程已經(jīng)加鎖文件,當(dāng)前進(jìn)程會一直等其他進(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);
?>

【二】.非阻塞(等待)模式:(只要有其他進(jìn)程已經(jīng)加鎖文件,當(dāng)前進(jìn)程不會等其他進(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 | LOCK_NB))
{
  $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);
?>

如果連接數(shù)據(jù)庫費(fèi)時間的話,下面有個簡單的小demo,可以更直觀的理解下。

demo.php

?php
$fp = fopen("file_lock.txt", "r");
// 加鎖
if(flock($fp, LOCK_EX))
{
  sleep(10);
  echo 1;
  //執(zhí)行完成解鎖
  flock($fp,LOCK_UN);
} else {
  echo 2;
}
//關(guān)閉文件
fclose($fp);

demo2.php

?php
$fp = fopen("file_lock.txt", "r");
// 加鎖(如果改成flock($fp, LOCK_EX | LOCK_NB),demo2.php會直接返回2,否則會等待demo.php執(zhí)行完返回1)
if(flock($fp, LOCK_EX))
{
  echo 1;
} else {
  echo 2;
}
//關(guān)閉文件
fclose($fp);

同時運(yùn)行兩個文件,然后修改demo2中加鎖機(jī)制,就可以看出來阻塞(等待)模式和非阻塞(等待)模式的區(qū)別了。

但是這樣會導(dǎo)致隊(duì)列堵塞,假如10個人同一秒寫入數(shù)據(jù)庫,那就堵塞了,第10個人會等待前9個都執(zhí)行完才會執(zhí)行!

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php文件操作總結(jié)》、《PHP常用遍歷算法與技巧總結(jié)》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計(jì)算法總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》及《php常見數(shù)據(jù)庫操作技巧匯總》

希望本文所述對大家PHP程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • PHP讀寫文件高并發(fā)處理操作實(shí)例詳解
  • php處理搶購類功能的高并發(fā)請求
  • php結(jié)合redis實(shí)現(xiàn)高并發(fā)下的搶購、秒殺功能的實(shí)例
  • php 根據(jù)url自動生成縮略圖并處理高并發(fā)問題
  • PHP flock 文件鎖詳細(xì)介紹
  • PHP程序中的文件鎖、互斥鎖、讀寫鎖使用技巧解析
  • PHP文件鎖定寫入實(shí)例解析
  • PHP文件鎖函數(shù)flock()詳細(xì)介紹
  • PHP 文件鎖與進(jìn)程鎖的使用示例
  • PHP基于文件鎖解決多進(jìn)程同時讀寫一個文件問題示例

標(biāo)簽:佛山 延安 宜春 宿遷 工商登記 深圳 澳門 常德

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP使用文件鎖解決高并發(fā)問題示例》,本文關(guān)鍵詞  PHP,使用,文件,鎖,解決,高并發(fā),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP使用文件鎖解決高并發(fā)問題示例》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP使用文件鎖解決高并發(fā)問題示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 资中县| 万荣县| 阿巴嘎旗| 通榆县| 五指山市| 郁南县| 垫江县| 连城县| 乌拉特中旗| 新乡市| 双辽市| 阳春市| 临武县| 双辽市| 财经| 鹤岗市| 兴化市| 南通市| 江川县| 武冈市| 印江| 丰都县| 乐亭县| 陇南市| 都昌县| 盖州市| 连州市| 郎溪县| 盐池县| 廊坊市| 宜君县| 海林市| 杭州市| 东明县| 涿鹿县| 农安县| 安图县| 衡水市| 瑞丽市| 邓州市| 太谷县|