3
我正在使用file()通過帶有選項卡的數組來讀取文件。我想鎖定文件,但我似乎無法使用flock()處理文件。是否有可能做到這一點?如果是這樣,怎麼樣?如果沒有,文件()是否從一開始就鎖定文件並減輕潛在的共享問題?在讀取時,file()是否鎖定文件?
我正在使用file()通過帶有選項卡的數組來讀取文件。我想鎖定文件,但我似乎無法使用flock()處理文件。是否有可能做到這一點?如果是這樣,怎麼樣?如果沒有,文件()是否從一開始就鎖定文件並減輕潛在的共享問題?在讀取時,file()是否鎖定文件?
根據the documentation(特別是註釋),它不會讀取通過flock
鎖定的文件。
您有2種選擇。
閱讀與fgets
文件(不檢查錯誤):
$f = fopen($file, 'r');
flock($f, LOCK_SH);
$data = array();
while ($row = fgets($f)) {
$data[] = $row;
}
flock($f, LOCK_UN);
fclose($f);
閱讀文件,file()
並使用單獨的 「加鎖文件」:
$f = fopen($file . '.lock', 'w');
flock($f, LOCK_SH);
$data = file($file);
flock($f, LOCK_UN);
fclose($f);
unlink($file . '.lock');
非常感謝! – 2011-01-25 03:24:15
能你提供了一個你的代碼示例來描述你想在這裏實現什麼?你使用什麼文件系統? – Gajahlemu 2011-01-25 02:08:52