php中文件鎖解決多進程同時讀寫一個文件問題的解決方法

本文實例講述了php基于文件鎖解決多進程同時讀寫一個文件問題。分享給大家供大家參考,具體如下:

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

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

/*  *flock(file,lock,block)  *file?必需,規(guī)定要鎖定或釋放的已打開的文件  *lock?必需。規(guī)定要使用哪種鎖定類型。  *block?可選。若設(shè)置為?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);  )

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊8 分享