2011-01-25 47 views
3

我正在使用file()通過帶有選項卡的數組來讀取文件。我想鎖定文件,但我似乎無法使用flock()處理文件。是否有可能做到這一點?如果是這樣,怎麼樣?如果沒有,文件()是否從一開始就鎖定文件並減輕潛在的共享問題?在讀取時,file()是否鎖定文件?

+0

能你提供了一個你的代碼示例來描述你想在這裏實現什麼?你使用什麼文件系統? – Gajahlemu 2011-01-25 02:08:52

回答

4

根據the documentation(特別是註釋),它不會讀取通過flock鎖定的文件。

您有2種選擇。

  1. 閱讀與fgets文件(不檢查錯誤):

    $f = fopen($file, 'r'); 
    flock($f, LOCK_SH); 
    $data = array(); 
    while ($row = fgets($f)) { 
        $data[] = $row; 
    } 
    flock($f, LOCK_UN); 
    fclose($f); 
    
  2. 閱讀文件,file()並使用單獨的 「加鎖文件」:

    $f = fopen($file . '.lock', 'w'); 
    flock($f, LOCK_SH); 
    $data = file($file); 
    flock($f, LOCK_UN); 
    fclose($f); 
    unlink($file . '.lock'); 
    
+0

非常感謝! – 2011-01-25 03:24:15

相關問題