【发布时间】:2015-10-09 23:50:25
【问题描述】:
我想将文件读入字符串,修改内容并将处理后的字符串写回文件。 此外,对服务器的另一个请求可能开始得太早,并尝试在第一个文件通过之前写入相同的文件 - 这绝不会发生(到目前为止我正在使用羊群) - 如果脚本会阻塞直到锁被释放。
这是一种不完整的方法
$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 的事实似乎不足以将您的问题与您引用的问题区分开来。还有哪些其他区别?
-
问题基本相同。另一个问题的问题是没有一个答案是好的,因为它们并没有真正解决锁定问题。
-
另请注意,不同之处在于我不希望解决方案是“最干净”但最有效的。