0

我正在使用以下基本 PHP:

<?php

    if (file_exists('count_file.txt')) 
    {
        $fil = fopen('count_file.txt', r);
        $dat = fread($fil, filesize('count_file.txt')); 
        echo $dat+1;
        fclose($fil);
        $fil = fopen('count_file.txt', w);
        fwrite($fil, $dat+1);
    }

    else
    {
        $fil = fopen('count_file.txt', w);
        fwrite($fil, 1);
        echo '1';
        fclose($fil);
    }
?>

作为一个命中计数器(我宁愿没有一个,但我们坚持要这样做)。txt 文件记录了点击次数并且它可以工作......但是计数器随机(有时在几周后,有时在几个月后)决定跳闸并从 4300 下降到 11。谁能告诉我如何纠正这个作为越来越烦人了??

4

2 回答 2

1

filesize 函数告诉您文件中的字节数。PHP.net 可以向您描述该函数是如何工作的。您应该从文件中读取一行(fgets)而不是使用该函数(该行应该有命中计数),然后将命中计数加一,然后重新保存。

让我给你打个比方。你在厨房里,你拿出一个蓝莓容器,你想知道有多少蓝莓,但你却问容器它有多少英寸长。然后你把所有的蓝莓都扔掉,把英寸数 + 1 的蓝莓放在容器里。这没有任何意义,但这就是你的脚本所做的。如果您更改以下行: $dat = fread($fil, filesize('count_file.txt')); TO $dat = fgets($fil); 您应该阅读您有多少蓝莓,在该数字上加一并重新保存。

于 2012-07-12T12:25:07.813 回答
1

您没有使用任何锁定。如果两个或多个请求同时访问您的服务器,它们将相互干扰对方的文件操作。这种事情最好在数据库中完成。

于 2012-07-12T12:22:03.567 回答