PHP文件鎖函數(shù)flock()詳細介紹
文件操作系統(tǒng)是在網(wǎng)絡環(huán)境下完成的,可能有多個客戶端用戶在同一個時刻對服務器上的同一個文件訪問。當這種并發(fā)訪問產生時,很可能會破壞文件中。例如一個用戶正在向文件中寫入數(shù)據(jù),當還沒有寫完時,其他用戶在這一時刻也向這個文件中寫數(shù)據(jù),就會造成數(shù)據(jù)寫入混亂。還有,當用戶沒有將數(shù)據(jù)寫完時,其他用戶就去獲取這個文件中的內容,也會得到殘缺的數(shù)據(jù)。
在PHP中提供了flock()函數(shù),可以對文件使用鎖定機制(鎖定或釋放文件)。當一個進程在訪問文件時加上鎖,其他進程要想對該文件進行訪問,則必須等到鎖定被釋放以后。這樣就可以避免在并發(fā)訪問同一個文件時破壞數(shù)據(jù)。該函數(shù)的原型如下:
bool flock(int handle,int operation[,int&wouldblock]) //輕便的咨詢文件鎖定
第一個參數(shù)handle必須是一個已經(jīng)打開的文件資源,第二個參數(shù)opeation也是必需的,規(guī)定使用哪種類型。operation可以是以下值之一:
★LOCK_SH取得共享鎖定(從文件中讀取數(shù)據(jù)時使用)。
★LOCK_EX取得獨占鎖定(向文件中寫入數(shù)據(jù)時使用)。
★LOCK_UN釋放鎖定(無論共享或獨占鎖,都用它釋放)。
★LOCK_NB附加鎖定(如果不希望flock()在鎖定時堵塞,則應在上述鎖定后加上該鎖)。
如果鎖定會堵塞的話(已經(jīng)被flock()鎖定的文件,再次鎖定時,flock()函數(shù)會被掛起,這時成為鎖定堵塞),也可以將可選的第三個參數(shù)設定為1,則當進行鎖定時會阻擋其他進程。鎖定操作也可以被fclose()釋放。為了讓flock()函數(shù)發(fā)揮作用,在所有訪問文件的程序中都必須使用相同的方式鎖定文件。該函數(shù)如果成功則返回TRUE,失敗則返回FALSE。
相關文章
PHP判斷訪客是否手機端(移動端瀏覽器)訪問的方法總結【4種方法】
這篇文章主要介紹了PHP判斷訪客是否手機端(移動端瀏覽器)訪問的方法,結合實例形式總結分析了php基于HTTP_X_WAP_PROFILE、HTTP_VIA、HTTP_USER_AGENT、HTTP_ACCEPT等4種方法判斷訪客類型的相關操作技巧,需要的朋友可以參考下2019-03-03
apache+codeigniter 通過.htcaccess做動態(tài)二級域名解析
今天將服務器php版本升到了5.4.4,然后將之前的一個項目改用apache,動態(tài)二級轉向用.htcaccess實現(xiàn)了動態(tài)二級域名解析,共享一下2012-07-07
在wamp集成環(huán)境下升級php版本(實現(xiàn)方法)
本篇文章是對在wamp集成環(huán)境下升級php版本的方法進行了詳細的分析介紹,需要的朋友參考下2013-07-07
PHP中spl_autoload_register()函數(shù)用法實例詳解
這篇文章主要介紹了PHP中spl_autoload_register()函數(shù)用法,結合實例形式分析了__autoload函數(shù)及spl_autoload_register函數(shù)的相關使用技巧,需要的朋友可以參考下2016-07-07
phpMyAdmin 鏈接表的附加功能尚未激活問題的解決方法(已測)
今天幫客戶配置phpmyadmin,一直有“鏈接表的附加功能尚未激活”的問題,登陸phpmyadmin后,會在底部顯示“鏈接表的附加功能尚未激活。要查出原因,請點擊此處?!钡奶崾?。2012-03-03

