我正在使用以下基本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.有人可以告诉我如何纠正这个它变得烦人了吗?
答案 0 :(得分:1)
您没有使用任何锁定。如果两个或多个请求同时到达您的服务器,他们将会踩踏彼此的文件操作。这种事情在数据库中做得更好。
答案 1 :(得分:1)
filesize函数告诉您文件中的字节数。 PHP.net可以描述该功能如何对您有用。您应该从文件中读取一行(fgets)而不是使用该函数(该行应该有命中计数),然后在命中计数中加一,然后重新保存。
让我给你一个类比。你在厨房,你拉出一个蓝莓容器,你想知道有多少蓝莓,但你要问容器多少英寸长。然后你摆脱所有的蓝莓,并在容器中放入英寸+ 1蓝莓的数量。没有什么是有意义的,但这就是你的脚本所做的。如果更改行:$ dat = fread($ fil,filesize('count_file.txt')); TO $ dat = fgets($ fil);您应该阅读有多少蓝莓,在该数字中添加一个并重新保存。