在 php 中读取然后覆盖文件内容的最佳方法是什么?

Phi*_*lip 5 php fopen file fwrite fread

php 中打开文件、读取内容并随后使用基于原始内容的一些输出覆盖文件内容的最干净方法是什么?具体来说,我试图打开一个填充有项目列表(以换行符分隔)的文件,处理/添加项目到列表中,从列表中删除最旧的 N 个条目,最后将列表写回到文件中。

fopen(<path>, 'a+')
flock(<handle>, LOCK_EX)
fread(<handle>, filesize(<path>))
// process contents and remove old entries
fwrite(<handle>, <contents>)
flock(<handle>, LOCK_UN)
fclose(<handle>)
Run Code Online (Sandbox Code Playgroud)

请注意,我需要使用集群()锁定文件,以便跨多个页面请求保护它。fopen() 时的“w+”标志会起作用吗?php 手册指出它将把文件截断为零长度,所以看起来这可能会阻止我读取文件的当前内容。

Kin*_*nch 0

$data = file_get_contents($filename);
Run Code Online (Sandbox Code Playgroud)

file_put_contents($filename, $data);
Run Code Online (Sandbox Code Playgroud)