1

我为一个网络应用程序制作了一个计数器,但我对它为什么要增加 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 脚本被调用了两次。

看看浏览器调用了什么,例如使用Firebug的 Net 选项卡。

一个典型的例子是一个<img>空的标签src:浏览器会认为空src点指向当前页面——并重新加载当前的 URL。


作为旁注:而不是读取文件然后才将其写回,您应该以读/写模式打开文件并锁定它,以避免并发写入 - 请参阅flock().

基本上,由于您已经在 r+ 模式下打开文件,因此您应该使用类似的东西fgets()来读取它——而不是file_get_contents().

于 2011-04-06T19:49:44.283 回答