我用的是以下基本PHP: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.
我被告知定为这是使用文件锁定,所以我改成下面的代码:
<?php
$dat = file_get_contents('count_file.txt');
$fil = fopen('count_file.txt', 'w');
if (flock($fil, LOCK_EX)) {
echo $dat+1;
fwrite($fil, $dat+1);
flock($fil, LOCK_UN);
}
fclose($fil);
?>
现在,几天后它再次从5000到13任何下降有一些想法,为什么?
为什么不来存储计数数据库?如果需要在外部文件中,然后运行一些脚本来获得点击次数? – dpitkevics 2012-07-18 08:49:04
我不是PHP精明的,所以不知道如何去存储它在数据库中? – John 2012-07-18 08:55:06