我在y网站上使用db
有一个简单的访问者计数器请求忽略语法错误
$date = date('Y/m/d');
$record = $this->db->query("select * from `page_view` where `date` = '$date' ");
if (empty($record))
$this->db->query(" insert into `page_view`(`date`,`view` ) value ('$date' ,'1') ");
else {
$sql = "UPDATE `page_view` SET `view` = `view`+1 WHERE `date` = '{$date}'";
$this->db->query($sql);
}
我每天有大约50万访客,这有点高,我的mysql负载也是如此。 我想知道我是否可以使用文本文件来存储每天的点击量,并且在一天结束时我会将总访问次数从文本文件移动/存储到数据库。
至少在我识别并重写慢查询之前。
$today = date('Y/m/d');
list ($counter , $date ) = explode('#' , file_get_contents('counter.txt'));
$counter++;
if( $today == $data )
file_put_contents('counter.txt' , $counter.'#'.$date );
else
file_put_contents('counter.txt' , '1#'.$today);
有什么理由我不应该这样做吗?我会有任何问题吗? 当几个访问者想要同时更新此文件时会发生什么?
答案 0 :(得分:0)
可以将file_put_contents()的第三个参数传递给“LOCK_EX”,以“在继续写入时获取文件的独占锁定”。我同意@jszobody,但数据库将是最佳选择。
http://php.net/file_put_contents
int file_put_contents ( string $filename , mixed $data [, **int $flags = 0** [, resource $context ]] )
LOCK_EX Acquire an exclusive lock on the file while proceeding to the writing.
答案 1 :(得分:-2)
我相信php当时只处理一个请求,因此更新文件应该不是问题,但为什么不使用分析或任何其他。为您节省一些负担并为您提供大量信息