PHP文件鎖函數(shù)flock()詳細(xì)介紹
文件操作系統(tǒng)是在網(wǎng)絡(luò)環(huán)境下完成的,可能有多個(gè)客戶端用戶在同一個(gè)時(shí)刻對服務(wù)器上的同一個(gè)文件訪問。當(dāng)這種并發(fā)訪問產(chǎn)生時(shí),很可能會(huì)破壞文件中。例如一個(gè)用戶正在向文件中寫入數(shù)據(jù),當(dāng)還沒有寫完時(shí),其他用戶在這一時(shí)刻也向這個(gè)文件中寫數(shù)據(jù),就會(huì)造成數(shù)據(jù)寫入混亂。還有,當(dāng)用戶沒有將數(shù)據(jù)寫完時(shí),其他用戶就去獲取這個(gè)文件中的內(nèi)容,也會(huì)得到殘缺的數(shù)據(jù)。
在PHP中提供了flock()函數(shù),可以對文件使用鎖定機(jī)制(鎖定或釋放文件)。當(dāng)一個(gè)進(jìn)程在訪問文件時(shí)加上鎖,其他進(jìn)程要想對該文件進(jìn)行訪問,則必須等到鎖定被釋放以后。這樣就可以避免在并發(fā)訪問同一個(gè)文件時(shí)破壞數(shù)據(jù)。該函數(shù)的原型如下:
bool flock(int handle,int operation[,int&wouldblock]) //輕便的咨詢文件鎖定
第一個(gè)參數(shù)handle必須是一個(gè)已經(jīng)打開的文件資源,第二個(gè)參數(shù)opeation也是必需的,規(guī)定使用哪種類型。operation可以是以下值之一:
★L(fēng)OCK_SH取得共享鎖定(從文件中讀取數(shù)據(jù)時(shí)使用)。
★L(fēng)OCK_EX取得獨(dú)占鎖定(向文件中寫入數(shù)據(jù)時(shí)使用)。
★L(fēng)OCK_UN釋放鎖定(無論共享或獨(dú)占鎖,都用它釋放)。
★L(fēng)OCK_NB附加鎖定(如果不希望flock()在鎖定時(shí)堵塞,則應(yīng)在上述鎖定后加上該鎖)。
如果鎖定會(huì)堵塞的話(已經(jīng)被flock()鎖定的文件,再次鎖定時(shí),flock()函數(shù)會(huì)被掛起,這時(shí)成為鎖定堵塞),也可以將可選的第三個(gè)參數(shù)設(shè)定為1,則當(dāng)進(jìn)行鎖定時(shí)會(huì)阻擋其他進(jìn)程。鎖定操作也可以被fclose()釋放。為了讓flock()函數(shù)發(fā)揮作用,在所有訪問文件的程序中都必須使用相同的方式鎖定文件。該函數(shù)如果成功則返回TRUE,失敗則返回FALSE。
相關(guān)文章
給PHP開發(fā)者的編程指南 第一部分降低復(fù)雜程度
給PHP開發(fā)者的編程指南,第一部分的內(nèi)容是降低復(fù)雜程度,感興趣的小伙伴們可以參考一下2016-01-01在WordPress的后臺(tái)中添加頂級(jí)菜單和子菜單的函數(shù)詳解
這篇文章主要介紹了在WordPress的后臺(tái)中添加頂級(jí)菜單和子菜單的函數(shù)詳解,需要的朋友可以參考下2016-01-01PHP正則刪除html代碼中a標(biāo)簽并保留標(biāo)簽內(nèi)容的方法
這篇文章主要介紹了PHP正則刪除html代碼中a標(biāo)簽并保留標(biāo)簽內(nèi)容的方法,涉及php基于正則的字符串匹配與子表達(dá)式操作相關(guān)技巧,需要的朋友可以參考下2017-05-05PHP時(shí)間戳和日期相互轉(zhuǎn)換操作實(shí)例小結(jié)
這篇文章主要介紹了PHP時(shí)間戳和日期相互轉(zhuǎn)換操作,結(jié)合實(shí)例形式總結(jié)分析了php常見的各種日期與時(shí)間戳轉(zhuǎn)換操作使用技巧與注意事項(xiàng),需要的朋友可以參考下2018-12-12PHP編程快速實(shí)現(xiàn)數(shù)組去重的方法詳解
這篇文章主要介紹了PHP編程快速實(shí)現(xiàn)數(shù)組去重的方法,結(jié)合實(shí)例形式分析了php數(shù)組去重復(fù)函數(shù)與使用技巧,需要的朋友可以參考下2017-07-07PHP異常Parse error: syntax error, unexpected T_VAR錯(cuò)誤解決方法
在PHP中根本不需要使用var聲明的,但是當(dāng)一個(gè)變量作為一個(gè)類的成員變量的時(shí)候,使用var還是沒有問題的2014-05-05PHP實(shí)現(xiàn)隨機(jī)調(diào)用圖片的示例代碼
在Web開發(fā)中,使用PHP可以輕松實(shí)現(xiàn)各種有趣的功能,這篇文章主要為大家介紹了如何使用PHP來實(shí)現(xiàn)隨機(jī)調(diào)用圖片,感興趣的小伙伴可以了解一下2023-08-08Ajax+PHP實(shí)現(xiàn)的刪除數(shù)據(jù)功能示例
這篇文章主要介紹了Ajax+PHP實(shí)現(xiàn)的刪除數(shù)據(jù)功能,涉及php結(jié)合ajax動(dòng)態(tài)交互操作數(shù)據(jù)庫實(shí)現(xiàn)數(shù)據(jù)查詢與刪除相關(guān)操作技巧,需要的朋友可以參考下2019-02-02