1

Webアプリのヒットカウンターを作成しましたが、なぜ2つ増えるのか混乱しています。整数を含むhitCount.txtファイルからカウンター変数を設定し、事前にインクリメントされた値をファイルに書き戻すだけです。

問題のコード:

    // get visit count
    $wag_file = "hitCount.txt";
    $fh = fopen($wag_file, 'r+');
    $wag_visit_count = intval(file_get_contents($wag_file));
    // increment, rewrite, and display visit count
    fputs($fh, ++$wag_visit_count);
    fclose($fh);
    echo $wag_visit_count . $html_br;
4

1 に答える 1

4

最も論理的な説明は、PHPスクリプトが2回呼び出されるということです。

たとえばFirebugの[ネット]タブを使用して、ブラウザによって呼び出されるものを見てください。

典型的な例は<img>、空のタグsrcです。ブラウザはsrc、現在のページへの空のポイントを考慮し、現在のURLをリロードします。


補足として:ファイルを読み取ってから書き戻すのではなく、ファイルを読み取り/書き込みモードで開き、ロックして、同時書き込みを回避する必要があります。を参照してくださいflock()

基本的に、すでにr +モードでファイルを開いているので、ファイルfgets()から読み取るようなものを使用する必要があります-ではありませんfile_get_contents()

于 2011-04-06T19:49:44.283 に答える