本文實例講述了PHP基于文件鎖解決多進程同時讀寫一個文件問題。分享給大家供大家參考,具體如下:
首先PHP是支持進程的而不支持多線程(這個先搞清楚了),如果是對于文件操作,其實你只需要給文件加鎖就能解決,不需要其它操作,PHP的flock已經幫你搞定了。
用flock在寫文件前先鎖上,等寫完后解鎖,這樣就實現了多線程同時讀寫一個文件避免沖突。大概就是下面這個流程
/**flock(file,lock,block)*file 必需,規定要鎖定或釋放的已打開的文件*lock 必需。規定要使用哪種鎖定類型。*block 可選。若設置為 1 或 true,則當進行鎖定時阻擋其他進程。*lock*LOCK_SH 要取得共享鎖定(讀取的程序)*LOCK_EX 要取得獨占鎖定(寫入的程序)*LOCK_UN 要釋放鎖定(無論共享或獨占)*LOCK_NB 如果不希望 flock() 在鎖定時堵塞/*if (flock($file,LOCK_EX)){fwrite($file,'write more words');flock($file,LOCK_UN);}else{//處理錯誤邏輯}fclose($file);)
希望本文所述對大家PHP程序設計有所幫助。
新聞熱點
疑難解答
圖片精選