我需要更改文件中的單個字符。
我寧可不使用輔助文件像這樣(僞代碼):
read(theFile)
更改文件的單個字符
change(theFile)
write(theFile2)
erase(theFile)
rename(theFile2,theFile)
因爲通過這種方式,某些進程可能需要該文件它實際上已被刪除。
相反,我想操作自己的文件,因爲這樣,我指望服務器的操作系統來負責計時和處理對文件的訪問。
我需要更改文件中的單個字符。
我寧可不使用輔助文件像這樣(僞代碼):
read(theFile)
更改文件的單個字符
change(theFile)
write(theFile2)
erase(theFile)
rename(theFile2,theFile)
因爲通過這種方式,某些進程可能需要該文件它實際上已被刪除。
相反,我想操作自己的文件,因爲這樣,我指望服務器的操作系統來負責計時和處理對文件的訪問。
你會想要使用flock
來鎖定文件。基於實例的代碼從PHP docs:
<?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);
?>
代替剪輯是可能的,但是這取決於你想是非常困難的。例如,下面的代碼:
<?php
$r = fopen("test.txt", "c+");
fseek($r, 50);
// write out
fwrite($r, "TESTING");
fclose($r);
將開闢一個名爲test.txt
文件並插入字測試到文件50個字節一旦關閉處理的文件將被保存的更改:沒必要做一個完整的更換。通過這種方式,您可以將添加到文件的內部的數據。我無法在任何PHP函數中看到刪除部分文件的方法,所以如果您需要刪除任何內容,您可能會不幸運,並且將不得不覆蓋整個文件。
編輯:這需要PHP 5.2.6或更高版本,據我所知fopen
文檔。