为什么PHP fopen + fwrite双文件?

时间:2011-04-29 20:27:44

标签: php-5.3 fopen fwrite fclose

我在Windows 7 Ultimate 32bit(禁用IIS)上使用Apache / 2.2.17运行PHP版本5.3.4。 我一直在关注fopen模式并且很清楚什么模式可以做什么,但是我无法用手指围绕为什么用单个fwrite双重发布到txt文件。 我甚至尝试过模式:w和c。

现在我不关心进入的新数据是前置还是附加,只要它在文件中没有截断现有数据就可以了。

真正的问题是,为什么“a”模式而不仅仅是附加新数据,它会在关闭之前将新数据写入(复制)两次。

在php代码中:

$fh = "";
if(!($fh = fopen("list.txt","x")) // if file exists, just open for writing (prepend)
   $fh = fopen("list.txt","a"); // if not exist, open just for writing (append)

fwrite($fh,"Somthing\r\n"); // write to file (filehandle, "data")
fclose($fh); // close the file

结果:
财产以后
财产以后

解决: 找到了罪魁祸首:我的编码没有错。这是我在Ubuntu 10.04下用于Chromium的html validator扩展。这个扩展显然导致类似于即时页面重新加载的内容。

2 个答案:

答案 0 :(得分:1)

$fh = fopen("list.txt","a");
fwrite($fh,"Somthing\n"); // write to file (filehandle, "data")
fclose($fh); // close the file

你的逻辑不正确。

它是如何完成的,我希望它适合你

答案 1 :(得分:0)

我很高兴知道这已经有多年历史了,但是仍然已知会出现此问题,还有另一个原因也可能导致它。我没有@robx使用的扩展名,禁用了所有扩展名,也没有更改-仍然是重复输入。但是,在阅读了有关该线程是Chrome浏览器错误(https://bugs.chromium.org/p/chromium/issues/detail?id=64810)的注释后,注释16表明该问题是网站图标已预取。不理想,但是删除文档开头的favion图标链接标记,它将停止重复输入。