我将以下代码用于点击计数器:
$fp = fopen("counterlog.txt", "r");
$count = fread($fp, 1024);
fclose($fp);
$count = $count + 1;
$fp = fopen("counterlog.txt", "w");
fwrite($fp, $count);
fclose($fp);
在文件中我只有一个数字,但我想通过以下方式获取文件:
18/09/2015 10
19/09/2015 11
所以我希望计数按天和日期分组,并用制表符分隔。
我知道我可以使用数据库来做到这一点,但在这种特定情况下,我只想使用文本文件。
有可能得到吗?
最佳答案
这应该符合您的要求。
<?php
$dateexists = false;
if(!file_exists('counterlog.txt'))
{
$fh = fopen('counterlog.txt', 'w');
fclose($fh);
}
$datecounts = file('counterlog.txt', FILE_IGNORE_NEW_LINES);
foreach($datecounts as $key => $datecount){
list($date, $count) = explode("\t", $datecount);
$count = (int) $count;
if($date == date('d/m/Y'))
{
$datecounts[$key] = $date."\t".++$count;
$dateexists = true;
}
}
if(!$dateexists)
{
$datecounts[] = date('d/m/Y')."\t1";
}
$fh = fopen('counterlog.txt', 'w');
if (flock($fh, LOCK_EX)) {
foreach($datecounts as $datecount)
{
fwrite($fh, $datecount.PHP_EOL);
}
flock($fh, LOCK_UN);
}
else
{
//couldn't lock, might want to do stuff here
}
fclose($fh);
关于带有 DATE 的 PHP 命中计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32669518/