2011-01-25 4 views
3

file()を使用して、タブを含む配列のようなファイルを読み込みます。私はファイルをロックしたいが、私はファイルを処理しているflock()を得ることができない。これは可能ですか?もしそうなら、どうですか?そうでない場合、file()はファイルを最初からロックし、潜在的な共有の問題を緩和しますか?file()は読み込み時にファイルをロックしますか?

+0

ことができますここで何を達成したいのかを記述するコードのサンプルを提供していますか?どのファイルシステムを使用していますか? – Gajahlemu

答えて

4

the documentation(特にコメント)によれば、flockでロックされたファイルは読み取られません。

あなたには2つの選択肢があります。

$f = fopen($file, 'r'); 
flock($f, LOCK_SH); 
$data = array(); 
while ($row = fgets($f)) { 
    $data[] = $row; 
} 
flock($f, LOCK_UN); 
fclose($f); 
  • file()でファイルを読み込み、別の "ロックファイル" を使用して::

    1. (エラーチェックなし)fgetsでファイルを読む

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

    完璧なおかげで! –

    関連する問題