站長資訊網
最全最豐富的資訊網站

php知道文件鎖嗎?有什么用?

在上一篇文章中我們介紹了使用PHP獲取指定目錄中文件(不包含子目錄)的方法,有需要的請看《php怎么知道指定目錄中有哪些文件》。這次我們來給大家介紹一下文件鎖,看看文件鎖的作用,添加文件鎖和解除文件鎖的方法。

在之前的文章《php文件操作之如何清空文件重新添加數據》中我們介紹了向文件中寫入數據的方法,文章中我們是同一時刻單個用戶在操作文件,因此沒有問題。但如果是在網絡環境下,多個客戶端用戶在同一個時刻對服務器上的同一個文件進行訪問操作,那么程序就會出現錯誤,且很可能會破壞文件。

舉個例子:

  • 有一個用戶正在向文件中寫入數據(數據還沒完),此時又有一個用戶也向這個文件中寫入數據,這樣會造成數據寫入混亂;

  • 或者,在用戶沒有將數據寫完的情況下,有其他用戶去獲取這個文件中的內容,那么該用戶獲取的數據是不是不完整的,會得到殘缺的數據。

為了解決這個問題,PHP提供了flock()函數–文件鎖機制,可以鎖定或釋放文件。

在使用PHP向文件中寫入時,暫時鎖定該文件;只有等到鎖定被釋放以后,其他用戶才能操作該文件。這樣可以避免在并發訪問同一個文件時破壞數據。

我們來看看下面一個示例:

<?php header("Content-Type: text/html;charset=utf-8");    //設置字符編碼 $file = "test.txt"; $handle = fopen($file,'w+'); //打開文件 if(flock($handle, LOCK_EX|LOCK_NB)){  //給文件上鎖     fwrite($handle, '現在是:'.date('Y-m-d H:i:s', time()));  //寫入數據     flock($handle, LOCK_UN);  //釋放文件鎖 }else{     echo "string"; } fclose($handle);//關閉文件 readfile($file);//讀取文件內容 ?>

分析上面的代碼:

先使用fopen()函數打開一個文件。然后使用flock($handle, LOCK_EX|LOCK_NB)語句給文件加一個“LOCK_EX”獨占鎖,且設置“LOCK_NB”在鎖定的情況下避免阻塞其他進程,直接返回else中的內容。接著就可以使用fwrite()函數進行寫入操作,寫入當前的時間了。

文件操作好后,就需要使用fclose()函數來關閉文件;最后使用readfile()函數讀取文件內容。因此輸出結果為:

php知道文件鎖嗎?有什么用?

下面我們來簡單了解一下flock()函數。

flock($file,$lock,$block)函數接受了2個必需參數$file(需要加鎖/解鎖的打開文件)和$lock(鎖定類型)和一個可省略的參數$block(當值設置為1 或 true時,可在文件鎖定時堵塞其它進程)。

$lock參數用于設置文件鎖類型,可以設置一個或多個以下值(多個值需要使用|來分隔):

  • LOCK_SH – 共享鎖定(讀取的程序)。允許其他進程訪問該文件。

  • LOCK_EX – 獨占鎖定(寫入的程序)。防止其他進程訪問該文件。

  • LOCK_UN – 釋放一個共享鎖定或獨占鎖定

  • LOCK_NB – 鎖定的情況下避免阻塞其他進程。

好了就說到這里了,有其他想知道的,可以點擊這個哦。→ →PHP文件基礎操作

推薦:《PHP面試題大匯總(收藏)》《php視頻教程》

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
国产精品VA在线观看无码不卡| 丁香六月婷婷精品免费观看| 国产四虎免费精品视频| 国产成人vr精品a视频| 精品一区二区三区高清免费观看| 国产亚洲欧美日韩亚洲中文色| 国产精品9999久久久久仙踪林| 国内精品videofree720| 精品国产日韩久久亚洲| 精品国产乱子伦一区二区三区 | 国产网站麻豆精品视频| 91精品免费高清在线| 99精品视频观看| 久久免费的精品国产V∧| 久久久久琪琪去精品色无码 | 国产精品爆乳在线播放第一人称| 高清精品一区二区三区一区| 国产精品真实对白精彩久久| 91午夜精品亚洲一区二区三区 | 99精品国产三级在线观看| 久久精品视频一区| 日韩精品免费视频| 免费精品一区二区三区第35 | 日韩精品亚洲人成在线观看| 久久夜色精品国产尤物| 久久精品亚洲综合| 久久精品成人免费观看| 亚洲国产精品福利片在线观看| 亚洲精品国偷自产在线| 久久99国产精品久久99| 久久夜色精品国产亚洲| 亚洲av永久无码精品网站 | 国产精品无码一二区免费 | 天天视频国产精品| 午夜精品久久久久久| 九九久久精品国产AV片国产| 七次郎在线视频观看精品| 国产精品极品美女自在线观看免费| 国产精品.XX视频.XXTV| 久久成人国产精品一区二区| 国内精品久久久久影院网站|