最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP實(shí)現(xiàn)對文件鎖進(jìn)行加鎖、解鎖操作的方法

 更新時間:2017年07月04日 08:56:14   作者:molaifeng  
這篇文章主要介紹了PHP實(shí)現(xiàn)對文件鎖進(jìn)行加鎖、解鎖操作的方法,結(jié)合實(shí)例形式分析了PHP針對文件進(jìn)行加鎖、解鎖操作的功能、實(shí)現(xiàn)方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了PHP實(shí)現(xiàn)對文件鎖進(jìn)行加鎖、解鎖操作的方法。分享給大家供大家參考,具體如下:

在項(xiàng)目中,一般都用到日志,如數(shù)據(jù)庫查詢?nèi)罩尽⒃L問日志、對外接口請求返回參數(shù)日志,在處理日志時簡單的寫法如下

$file = 'log.txt';
$fp = fopen($file, 'a+');
if(!is_writable($file)){
  die("The $file is not writable!");
}
fwrite($fp, 'here');
fclose($fp);

但這種寫法是由瑕疵的,一個網(wǎng)站同一時間并不是只有一個用戶訪問的,在多個用戶同時訪問時,就會出現(xiàn)問題,也就是多個進(jìn)程使用同一個資源時,前一個進(jìn)程寫到一半后面的進(jìn)程便開始寫了,因此最后生成的日志就亂了。這種情況下,就用到鎖了,在文件加鎖期間,其他進(jìn)程是不會修改文件的,只有當(dāng)文件解鎖時,才可以操作。寫法如下

$file = 'log.txt';
$fp = fopen($file, 'a+');
if(!is_writable($file)){
  exit("The $file is not writable!");
}
flock($fp, LOCK_EX);// 加鎖
fwrite($fp, 'here');
flock($fp, LOCK_UN);// 解鎖
fclose($fp);

如果想測試下在文件加鎖期間其他進(jìn)程操作不了文件的例子,可以用下面給出的demo

log.php

$file = 'log.txt';
$fp = fopen($file, 'a+');
if(!is_writable($file)){
  exit("The $file is not writable!");
}
flock($fp, LOCK_EX);
fwrite($fp, 'here');
sleep(10);
flock($fp, LOCK_UN);
fclose($fp);

test.php

$file = 'lock.txt';
$fp = fopen($file, 'a');
fwrite($fp, 'good'); // 在sleep期間寫不進(jìn)去
fclose($fp);
// 或是直接使用下面的這個例子,發(fā)現(xiàn)在sleep期間打印是個空值
//var_dump(file_get_contents($file));

測試時,先運(yùn)行l(wèi)og.php,再運(yùn)行test.php,會發(fā)現(xiàn)在sleep期間,test.php是執(zhí)行達(dá)不到效果的。

更多關(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ì)有所幫助。

相關(guān)文章

  • PHP編程中字符串處理的5個技巧小結(jié)

    PHP編程中字符串處理的5個技巧小結(jié)

    PHP編程中字符串處理的5個技巧小結(jié)...
    2007-11-11
  • php中自定義函數(shù)dump查看數(shù)組信息類似var_dump

    php中自定義函數(shù)dump查看數(shù)組信息類似var_dump

    本文為大家介紹下在php中自定義函數(shù)dump查看數(shù)組信息,具體示例如下,希望對大家有所幫助
    2014-01-01
  • php在apache環(huán)境下實(shí)現(xiàn)gzip配置方法

    php在apache環(huán)境下實(shí)現(xiàn)gzip配置方法

    這篇文章主要介紹了php在apache環(huán)境下實(shí)現(xiàn)gzip配置方法,較為詳細(xì)的分析了相關(guān)配置文件的修改技巧,非常具有實(shí)用價值,需要的朋友可以參考下
    2015-04-04
  • PHP操作xml代碼

    PHP操作xml代碼

    下面的代碼是獲取圖片新聞列表的函數(shù)代碼,里面有操作xml文件的核心代碼,需要的朋友可以參考下。
    2010-06-06
  • Yii2中簡單的場景使用介紹

    Yii2中簡單的場景使用介紹

    這篇文章主要給大家介紹了關(guān)于Yii2中簡單的場景使用的相關(guān)資料,文中介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來跟著小編一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-06-06
  • PHP中Static(靜態(tài))關(guān)鍵字功能與用法實(shí)例分析

    PHP中Static(靜態(tài))關(guān)鍵字功能與用法實(shí)例分析

    這篇文章主要介紹了PHP中Static(靜態(tài))關(guān)鍵字功能與用法,結(jié)合實(shí)例形式分析了Static關(guān)鍵字功能、以及靜態(tài)屬性、靜態(tài)變量等相關(guān)使用技巧,需要的朋友可以參考下
    2019-04-04
  • php7 沒有phpize的解決方法

    php7 沒有phpize的解決方法

    在本篇文章里小編給大家分享的是一篇關(guān)于php7 沒有phpize的解決方法及相關(guān)問題總結(jié),有需要的朋友們可以跟著學(xué)習(xí)下。
    2021-12-12
  • 關(guān)于php 高并發(fā)解決的一點(diǎn)思路

    關(guān)于php 高并發(fā)解決的一點(diǎn)思路

    涉及搶購、秒殺、抽獎、搶票等活動時,為了避免超賣,那么庫存數(shù)量是有限的,但是如果同時下單人數(shù)超過了庫存數(shù)量,就會導(dǎo)致商品超賣問題。那么我們怎么來解決這個問題呢,我的思路如下
    2017-04-04
  • PHP中register_shutdown_function函數(shù)的基礎(chǔ)介紹與用法詳解

    PHP中register_shutdown_function函數(shù)的基礎(chǔ)介紹與用法詳解

    php中的異常捕獲沒有java的強(qiáng)大,有些情況下,需要知道某段php程序業(yè)務(wù)是否正常執(zhí)行完,可以用register_shutdown_function函數(shù)來輔助實(shí)現(xiàn),這篇文章主要給大家介紹了關(guān)于PHP中register_shutdown_function函數(shù)的基礎(chǔ)介紹與用法的相關(guān)資料,需要的朋友可以參考。
    2017-11-11
  • PHP共享內(nèi)存用法實(shí)例分析

    PHP共享內(nèi)存用法實(shí)例分析

    這篇文章主要介紹了PHP共享內(nèi)存用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了基于共享內(nèi)存實(shí)現(xiàn)進(jìn)程間通信的技巧,需要的朋友可以參考下
    2016-02-02

最新評論

芮城县| 新民市| 屏边| 乐昌市| 双辽市| 成武县| 京山县| 元阳县| 开阳县| 文登市| 应城市| 苏尼特右旗| 仪征市| 大港区| 托里县| 玉屏| 兴业县| 云和县| 通道| 大埔县| 江陵县| 通辽市| 清远市| 大田县| 盱眙县| 安龙县| 济南市| 交口县| 舞钢市| 宁武县| 定陶县| 马龙县| 尚志市| 宁都县| 宜宾县| 岚皋县| 余江县| 光泽县| 呼和浩特市| 金塔县| 余姚市|