【问题标题】:Counter reset in phpphp中的计数器重置
【发布时间】:2026-02-11 09:25:01
【问题描述】:

我有一个脚本可以计算您访问页面的次数,我想做的是让计数器在它达到 5 时重置。即(从 1-5 计数)并重置回 1。任何想法?

$handle = fopen('counter.txt', 'r+');

    flock($handle, LOCK_EX);

        $total = (int) fread($handle, max(1, filesize('counter.txt')));

        $newTotal = ++$total;

        rewind($handle);

        fwrite($handle, $newTotal);

fclose($handle);

【问题讨论】:

  • 您的问题是什么?你在哪里遇到障碍?提交与问题有什么关系?我不知道,所以我从示例中删除了它。

标签: php loops counter reset


【解决方案1】:

很简单,

你可以使用

    $handle = fopen('counter.txt', 'r+');

    flock($handle, LOCK_EX);

        $total = (int) fread($handle, max(1, filesize('counter.txt')));
        if($total==5){
            fwrite($handle, 1);
        }
        else{
        $newTotal = ++$total;

        rewind($handle);

        fwrite($handle, $newTotal);
        }
fclose($f);

【讨论】:

  • 让我试试,我会告诉你它是如何运作的。非常感谢
  • @arkascha - 不是,而且您的评论对原始问题或答案没有帮助。
  • @N.B.既然你这么说,那好吧。在我看来,这更安全,实际上,以这种方式记录比较是常见的做法。但也许你有理由否认?
  • 好的,我正在尝试使用此代码,但它没有将 1 写入文件,任何想法
  • @N.B.我该怎么做,我试图在达到 5 时重置
【解决方案2】:
$f = fopen('counter.txt', 'r+');
flock($f, LOCK_EX);
$total = (int) fread($f, max(1, filesize('counter.txt')));

if (isset($_POST['submit'])) {
    rewind($f);
    $total = ($total >= 5)? 1 : $total++; // Increment or reset
    fwrite($f, $total); // Write new value
}

fclose($f);

【讨论】: