4

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バリデーター拡張機能でした。この拡張機能は、ページの即時リロードに似たものを引き起こしていたようです。

4

2 に答える 2

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

あなたの論理は正しくありませんでした。

それがその方法です、私はそれがあなたのために働くことを願っています

于 2011-04-29T20:34:06.327 に答える
1

これは何年も前のことですが、この問題はまだ発生していることがわかっており、それを引き起こす可能性のある別の理由があります。@robxで使用される拡張機能がなく、すべての拡張機能を無効にし、変更はありませんでした。それでもエントリは2つあります。ただし、Chromeのバグ(https://bugs.chromium.org/p/chromium/issues/detail?id=64810)についてこのスレッドを読んだ後、コメント16は、ファビコンがプリフェッチされていることが問題であることを示しています。理想的ではありませんが、ドキュメントの先頭にあるお気に入りアイコンのリンクタグを削除すると、二重入力が停止します。

于 2018-08-10T12:23:57.870 に答える