PHP文件鎖函數(shù)flock()詳細(xì)介紹
文件操作系統(tǒng)是在網(wǎng)絡(luò)環(huán)境下完成的,可能有多個(gè)客戶端用戶在同一個(gè)時(shí)刻對(duì)服務(wù)器上的同一個(gè)文件訪問(wèn)。當(dāng)這種并發(fā)訪問(wèn)產(chǎn)生時(shí),很可能會(huì)破壞文件中。例如一個(gè)用戶正在向文件中寫(xiě)入數(shù)據(jù),當(dāng)還沒(méi)有寫(xiě)完時(shí),其他用戶在這一時(shí)刻也向這個(gè)文件中寫(xiě)數(shù)據(jù),就會(huì)造成數(shù)據(jù)寫(xiě)入混亂。還有,當(dāng)用戶沒(méi)有將數(shù)據(jù)寫(xiě)完時(shí),其他用戶就去獲取這個(gè)文件中的內(nèi)容,也會(huì)得到殘缺的數(shù)據(jù)。
在PHP中提供了flock()函數(shù),可以對(duì)文件使用鎖定機(jī)制(鎖定或釋放文件)。當(dāng)一個(gè)進(jìn)程在訪問(wèn)文件時(shí)加上鎖,其他進(jìn)程要想對(duì)該文件進(jìn)行訪問(wèn),則必須等到鎖定被釋放以后。這樣就可以避免在并發(fā)訪問(wèn)同一個(gè)文件時(shí)破壞數(shù)據(jù)。該函數(shù)的原型如下:
bool flock(int handle,int operation[,int&wouldblock]) //輕便的咨詢文件鎖定
第一個(gè)參數(shù)handle必須是一個(gè)已經(jīng)打開(kāi)的文件資源,第二個(gè)參數(shù)opeation也是必需的,規(guī)定使用哪種類(lèi)型。operation可以是以下值之一:
★L(fēng)OCK_SH取得共享鎖定(從文件中讀取數(shù)據(jù)時(shí)使用)。
★L(fēng)OCK_EX取得獨(dú)占鎖定(向文件中寫(xiě)入數(shù)據(jù)時(shí)使用)。
★L(fēng)OCK_UN釋放鎖定(無(wú)論共享或獨(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ā)揮作用,在所有訪問(wèn)文件的程序中都必須使用相同的方式鎖定文件。該函數(shù)如果成功則返回TRUE,失敗則返回FALSE。
- PHP讀寫(xiě)文件高并發(fā)處理操作實(shí)例詳解
- php處理?yè)屬?gòu)類(lèi)功能的高并發(fā)請(qǐng)求
- php結(jié)合redis實(shí)現(xiàn)高并發(fā)下的搶購(gòu)、秒殺功能的實(shí)例
- php 根據(jù)url自動(dòng)生成縮略圖并處理高并發(fā)問(wèn)題
- PHP flock 文件鎖詳細(xì)介紹
- PHP程序中的文件鎖、互斥鎖、讀寫(xiě)鎖使用技巧解析
- PHP文件鎖定寫(xiě)入實(shí)例解析
- PHP 文件鎖與進(jìn)程鎖的使用示例
- PHP基于文件鎖解決多進(jìn)程同時(shí)讀寫(xiě)一個(gè)文件問(wèn)題示例
- PHP使用文件鎖解決高并發(fā)問(wèn)題示例
相關(guān)文章
PHP封裝的PDO數(shù)據(jù)庫(kù)操作類(lèi)實(shí)例
這篇文章主要介紹了PHP封裝的PDO數(shù)據(jù)庫(kù)操作類(lèi),結(jié)合具體實(shí)例形式分析了php基于PDO針對(duì)數(shù)據(jù)庫(kù)的增刪改查、事務(wù)、批量添加等相關(guān)操作技巧,需要的朋友可以參考下2017-06-06
PHP判斷訪客是否手機(jī)端(移動(dòng)端瀏覽器)訪問(wèn)的方法總結(jié)【4種方法】
這篇文章主要介紹了PHP判斷訪客是否手機(jī)端(移動(dòng)端瀏覽器)訪問(wèn)的方法,結(jié)合實(shí)例形式總結(jié)分析了php基于HTTP_X_WAP_PROFILE、HTTP_VIA、HTTP_USER_AGENT、HTTP_ACCEPT等4種方法判斷訪客類(lèi)型的相關(guān)操作技巧,需要的朋友可以參考下2019-03-03
apache+codeigniter 通過(guò).htcaccess做動(dòng)態(tài)二級(jí)域名解析
今天將服務(wù)器php版本升到了5.4.4,然后將之前的一個(gè)項(xiàng)目改用apache,動(dòng)態(tài)二級(jí)轉(zhuǎn)向用.htcaccess實(shí)現(xiàn)了動(dòng)態(tài)二級(jí)域名解析,共享一下2012-07-07
在wamp集成環(huán)境下升級(jí)php版本(實(shí)現(xiàn)方法)
本篇文章是對(duì)在wamp集成環(huán)境下升級(jí)php版本的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-07-07
PHP面向?qū)ο蟪绦蛟O(shè)計(jì)之對(duì)象生成方法詳解
這篇文章主要介紹了PHP面向?qū)ο蟪绦蛟O(shè)計(jì)之對(duì)象生成方法,簡(jiǎn)單介紹了php常見(jiàn)對(duì)象生成模式并結(jié)合實(shí)例形式分析了php對(duì)象生成的單例模式、工廠模式、原形模式等概念與實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-12-12
php源代碼安裝常見(jiàn)錯(cuò)誤與解決辦法分享
這篇文章主要介紹了在linux服務(wù)器中通過(guò)源代碼安裝php過(guò)程中,經(jīng)常會(huì)遇到的一些問(wèn)題做個(gè)小結(jié),特分享給需要的朋友2013-05-05
PHP中spl_autoload_register()函數(shù)用法實(shí)例詳解
這篇文章主要介紹了PHP中spl_autoload_register()函數(shù)用法,結(jié)合實(shí)例形式分析了__autoload函數(shù)及spl_autoload_register函數(shù)的相關(guān)使用技巧,需要的朋友可以參考下2016-07-07
phpMyAdmin 鏈接表的附加功能尚未激活問(wèn)題的解決方法(已測(cè))
今天幫客戶配置phpmyadmin,一直有“鏈接表的附加功能尚未激活”的問(wèn)題,登陸phpmyadmin后,會(huì)在底部顯示“鏈接表的附加功能尚未激活。要查出原因,請(qǐng)點(diǎn)擊此處?!钡奶崾?。2012-03-03

