程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP文件鎖函數flock()詳細介紹

PHP文件鎖函數flock()詳細介紹

編輯:PHP綜合

文件操作系統是在網絡環境下完成的,可能有多個客戶端用戶在同一個時刻對服務器上的同一個文件訪問。當這種並發訪問產生時,很可能會破壞文件中。例如一個用戶正在向文件中寫入數據,當還沒有寫完時,其他用戶在這一時刻也向這個文件中寫數據,就會造成數據寫入混亂。還有,當用戶沒有將數據寫完時,其他用戶就去獲取這個文件中的內容,也會得到殘缺的數據。

在PHP中提供了flock()函數,可以對文件使用鎖定機制(鎖定或釋放文件)。當一個進程在訪問文件時加上鎖,其他進程要想對該文件進行訪問,則必須等到鎖定被釋放以後。這樣就可以避免在並發訪問同一個文件時破壞數據。該函數的原型如下:
復制代碼 代碼如下:
bool flock(int handle,int operation[,int&wouldblock])             //輕便的咨詢文件鎖定

第一個參數handle必須是一個已經打開的文件資源,第二個參數opeation也是必需的,規定使用哪種類型。operation可以是以下值之一:
★LOCK_SH取得共享鎖定(從文件中讀取數據時使用)。
★LOCK_EX取得獨占鎖定(向文件中寫入數據時使用)。
★LOCK_UN釋放鎖定(無論共享或獨占鎖,都用它釋放)。
★LOCK_NB附加鎖定(如果不希望flock()在鎖定時堵塞,則應在上述鎖定後加上該鎖)。

如果鎖定會堵塞的話(已經被flock()鎖定的文件,再次鎖定時,flock()函數會被掛起,這時成為鎖定堵塞),也可以將可選的第三個參數設定為1,則當進行鎖定時會阻擋其他進程。鎖定操作也可以被fclose()釋放。為了讓flock()函數發揮作用,在所有訪問文件的程序中都必須使用相同的方式鎖定文件。該函數如果成功則返回TRUE,失敗則返回FALSE。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved