我需要更改文件中的单个字符。
我宁愿不使用这样的辅助文件(伪代码):
read(theFile)
change(theFile)
write(theFile2)
erase(theFile)
rename(theFile2,theFile)
因为这样,某些进程在实际删除该文件时可能需要该文件。
相反,我想对自己的文件进行操作,因为这样,我依靠服务器的操作系统来处理时间和处理对文件的访问。
您需要
使用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);
?>
可以就地编辑,但根据您想要的内容可能非常困难。例如,此代码:
<?php
$r = fopen("test.txt", "c+");
fseek($r, 50);
// write out
fwrite($r, "TESTING");
fclose($r);
将打开一个名为 test.txt
的文件,并将单词 TESTING 插入到 50 字节的文件中。关闭句柄后,文件将与更改一起保存:无需完全替换。通过这种方式,您可以将数据添加到文件的内部。我在任何PHP函数中都看不到删除文件部分的方法,因此如果您需要删除任何内容,则可能不走运,并且必须覆盖整个文件。
编辑:据我所知,这需要PHP 5.2.6或更高版本fopen
文档。