成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導航首頁 ? 技術教程 ? PHP實現對文件鎖進行加鎖、解鎖操作的方法
全站頭部文字 我要出現在這里
PHP實現對文件鎖進行加鎖、解鎖操作的方法 722 2023-12-08   

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

在項目中,一般都用到日志,如數據庫查詢日志、訪問日志、對外接口請求返回參數日志,在處理日志時簡單的寫法如下

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

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

$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);

如果想測試下在文件加鎖期間其他進程操作不了文件的例子,可以用下面給出的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期間寫不進去
fclose($fp);
// 或是直接使用下面的這個例子,發現在sleep期間打印是個空值
//var_dump(file_get_contents($file));

測試時,先運行log.php,再運行test.php,會發現在sleep期間,test.php是執行達不到效果的。

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

希望本文所述對大家PHP程序設計有所幫助。


主站蜘蛛池模板: 林子祥电影| kiss the rain钢琴谱| 天狂传说之巴啦啦小魔仙合集| 八年级上册英语第三单元2b翻译| 炙热电影| 妈妈的朋友电影日本| 白宝山末路1997电视剧免费版| 成龙电影全部电影作品大全| 青山知可子最经典十部电视剧| 免费观看熊出没之狂野大陆| 电影《埋葬巴斯托》| 远古食人鱼| 贵州三日游| 复仇之路| 新一剪梅电视剧演员表| 赫伯曼电影免费观看| 五年级下册语文第七单元口语交际 | 黑之教室| 长靴靴虐视频vk| 免费头像图片| 天才不能承受之重| 松树的风格原文完整版| 李婷芷| 性欧美18一69性sexhd| 汪汪战队动画片| 黄视频免费观看网站| 电影《年龄差》| cctv第一剧场频道| 吴京的10大经典电影| 2024厨房橱柜最新款图片视频| 在线播放国内自拍情侣酒店| 抗战电视剧大全免费| 在线观看中文字幕视频| 爱情公寓在线免费观看| 电影《一秒钟》完整版| 体方法师| 范海辛电影原声在线观看免费| 祈今朝电视剧免费观看影视大全| 风在吹韩国电影| 胡蕾| angela white电影|

!!!站長長期在線接!!!

網站、小程序:定制開發/二次開發/仿制開發等

各種疑難雜癥解決/定制接口/定制采集等

站長微信:lxwl520520

站長QQ:1737366103