PHP中的一个琐碎计数器失败



我有一个PHP脚本,每次检索页面时都会更新一个计数器。使用在bash中创建文件后

echo -n 0 > counterfile.txt

PHP页面如下所示:

<?php
$count = 'counterfile.txt';
file_put_contents($count,1+file_get_contents($count),LOCK_EX);
?>

事情进展顺利,我看到counterfile.txt正在更新,但偶尔会重置计数器,或者至少有时今天的计数器值小于昨天的计数器值。

为什么会这样?也许是10垒的问题。。。?也许出于某种原因,这更安全:

<?php
$count = 'counterfile.txt';
$n = file_get_contents($count);
file_put_contents($count,($n++),LOCK_EX);
?>

在继续写入之前,确保file_get_contents成功(不返回false((否则计数器将重新设置为1,这是不可取的(

因此:

<?php
$count = 'counterfile.txt';
$var1=file_get_contents($count);
if ($var1!=false){
file_put_contents($count, (1+$var1) ,LOCK_EX);
}
?>

或者,您可以使用db方法(每次将字段值增加一个(

相关内容

最新更新