PHP寫個函數來解決多線程同時讀寫一個文件的問題

利用flock()函數對文件進行加鎖(排它鎖),實現併發按序進行。
flock(file,lock,block)有三個參數。
file:已經打開的文件
lock:鎖的類型
(1)LOCK_SH:共享鎖(讀鎖)
(2)LOCK_EX:獨佔鎖定(排它鎖,寫鎖)
(3)LOCK_UN:解鎖
(4)LOCK_NB:如果希望在文件鎖定時阻塞進程,那麼需要加上該參數
block:設置爲true的時候,鎖定文件時,會阻止其他進程


$file = fopen('test.txt','w+');   //以只讀寫方式打開

if(flock($file,LOCK_EX)) {   //先看鎖有沒有生效
    fwrite($file,'i am PHP');
    flock($file,LOCK_UN);   //把鎖關閉
}else{
    echo 'noyhing';
}

fclose($file);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章