我想将文件读入字符串,修改内容并将处理后的字符串写回文件。 此外,对服务器的另一个请求可能会启动得太早,并尝试在第一次通过之前写入相同的文件 - 这绝不会发生(目前为止,即使使用flock) - 如果脚本将被阻塞,锁被释放。什么是最有效的方式来读取,然后覆盖在PHP文件内容?
这是某种残缺办法
$h = fopen($fp, 'a+');
flock($h, LOCK_EX);
$oTxt = '';
while (!feof($file)) {
$oTxt .= fread($h, 8192);
}
rewind($h);
ftruncate($h, 0)
fwrite($h,); // process contents and write it back
flock($h, LOCK_UN);
fclose($h);
注:这个问题是非常相似的What's the best way to read from and then overwrite file contents in php?(对我来说它是一个JSON文件,我想解码,插入或编辑某个节点,然后再次对其进行编码)但它不是重复的。
事实上,你正在处理json似乎不足以区分你的问题和你引用的问题。其他的一些区别是什么? – gymbrall
问题基本相同。其他问题的问题是没有一个答案是好的,因为他们没有真正解决锁定问题。 – Barmar
请注意,不同之处在于,我不希望解决方案成为“最干净”但效率最高的解决方案。 – IARI