我正在使用以下基本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文件会记录点击次数,它会随机works...however计数器(有时是几周后,有时是几个月后),然后决定出错并从4300下降到11。有谁能告诉我如何纠正它,因为它变得很烦人?
发布于 2012-07-12 20:22:04
您没有使用任何锁定。如果两个或更多的请求同时访问您的服务器,它们将会互相践踏对方的文件操作。这类事情最好在数据库中完成。
发布于 2012-07-12 20:25:08
filesize函数告诉您文件中的字节数。PHP.net可以向您描述函数是如何工作的。与使用该函数不同,您应该从文件中读取一行(fgets) (该行上应该有命中计数),然后将命中计数加1,然后重新保存。
让我给你一个类比。你在厨房里,拿出一个装满蓝莓的容器,你想知道里面有多少蓝莓,但你却问容器有多少英寸长。然后你把所有的蓝莓都扔掉,把几英寸+1英寸的蓝莓放进容器里。这没有任何意义,但这就是你的脚本所做的。如果您将行:$dat = fread($fil,filesize('count_file.txt'));更改为$dat = fgets($fil);,您应该读取您有多少个蓝莓,将该数字加1,然后重新保存。
https://stackoverflow.com/questions/11451701
复制相似问题