明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

php中文件鎖處理多進(jìn)程一起讀寫(xiě)一個(gè)文件問(wèn)題的處理方法

[摘要]本文實(shí)例講述了PHP基于文件鎖解決多進(jìn)程同時(shí)讀寫(xiě)一個(gè)文件問(wèn)題。分享給大家供大家參考,具體如下:首先PHP是支持進(jìn)程的而不支持多線程(這個(gè)先搞清楚了),如果是對(duì)于文件操作,其實(shí)你只需要給文件加鎖就能解...
本文實(shí)例講述了PHP基于文件鎖解決多進(jìn)程同時(shí)讀寫(xiě)一個(gè)文件問(wèn)題。分享給大家供大家參考,具體如下:

首先PHP是支持進(jìn)程的而不支持多線程(這個(gè)先搞清楚了),如果是對(duì)于文件操作,其實(shí)你只需要給文件加鎖就能解決,不需要其它操作,PHP的flock已經(jīng)幫你搞定了。

用flock在寫(xiě)文件前先鎖上,等寫(xiě)完后解鎖,這樣就實(shí)現(xiàn)了多線程同時(shí)讀寫(xiě)一個(gè)文件避免沖突。大概就是下面這個(gè)流程


/*
*flock(file,lock,block)
*file 必需,規(guī)定要鎖定或釋放的已打開(kāi)的文件
*lock 必需。規(guī)定要使用哪種鎖定類(lèi)型。
*block 可選。若設(shè)置為 1 或 true,則當(dāng)進(jìn)行鎖定時(shí)阻擋其他進(jìn)程。
*lock
*LOCK_SH 要取得共享鎖定(讀取的程序)
*LOCK_EX 要取得獨(dú)占鎖定(寫(xiě)入的程序)
*LOCK_UN 要釋放鎖定(無(wú)論共享或獨(dú)占)
*LOCK_NB 如果不希望 flock() 在鎖定時(shí)堵塞
/*
if (flock($file,LOCK_EX))
{
fwrite($file,'write more words');
flock($file,LOCK_UN);
}
else
{
//處理錯(cuò)誤邏輯
}
fclose($file);
)

以上就是php中文件鎖解決多進(jìn)程同時(shí)讀寫(xiě)一個(gè)文件問(wèn)題的解決方法的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!


學(xué)習(xí)教程快速掌握從入門(mén)到精通的SQL知識(shí)。