Windows 7 Ultimate 32ビット(IISが無効)でApache/2.2.17を使用してPHPバージョン5.3.4を実行しています。私はfopenモードを見ていて、どのモードが何をするのかよく知っていますが、なぜ1回のfwriteでtxtファイルに二重に投稿するのかを理解できません。私もモードを試しました:wとc。
これで、既存のデータを切り捨てずにファイル内にある限り、受信する新しいデータが先頭に追加されるか追加されるかは関係ありません。
本当の問題は、なぜ「a」モードは単に新しいデータを追加するのではなく、ファイルが閉じる前に新しいデータをファイルに2回書き込む(複製する)のかということです。
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
結果:
Somthing
Somthing
解決済み:原因を見つけました:私のコーディングに問題はありませんでした。これは、 Ubuntu10.04でChromiumに使用したhtmlバリデーター拡張機能でした。この拡張機能は、ページの即時リロードに似たものを引き起こしていたようです。