2

ファイル内の1文字を変更する必要があります。
私はそのような補助ファイルを使用したくない(擬似コード):
read(theFile)

change(theFile)

write(theFile2)

erase(theFile)

rename(theFile2,theFile)

このように、一部のプロセスでは、実際に消去されるときにそのファイルが必要になる場合があります。
むしろ、私は自分のファイルを操作したいと思います。このように、ファイルへのタイミングとプロセスアクセスを処理するためにサーバーのOSを信頼しているからです。

4

2 に答える 2

4

flockファイルをロックするために使用することをお勧めします。PHPドキュメントのコードに基づく例:

<?php

$fp = fopen("file.txt", "r+");

if (flock($fp, LOCK_EX)) {  // acquire an exclusive lock
    //make your changes
    fflush($fp);            // flush output before releasing the lock
    flock($fp, LOCK_UN);    // release the lock
} else {
    echo "Couldn't get the lock!";
}

fclose($fp);

?>
于 2012-05-07T19:00:03.050 に答える
1

インプレース編集は可能ですが、必要なものによっては非常に難しい場合があります。たとえば、次のコードは次のとおりです。

<?php

$r = fopen("test.txt", "c+");
fseek($r, 50);

// write out
fwrite($r, "TESTING");
fclose($r);

と呼ばれるファイルを開き、TESTINGtest.txtという単語を50バイトのファイルに挿入します。ハンドルを閉じると、ファイルは変更とともに保存されます。置換時に完全に実行する必要はありません。このようにして、ファイルの内部にデータを追加できます。どのPHP関数でもファイルの一部を削除する方法がわかりませんでした。そのため、何かを削除する必要がある場合は、おそらく運が悪く、ファイル全体を上書きする必要があります。

編集:ドキュメントからわかる限り、これにはPHP5.2.6以降が必要ですfopen

于 2012-05-07T19:58:12.610 に答える