function updateviews($aid, $expiretime=60)
{
$logfile = ROOTPATH."cache/article_view.log";
$logfile_flag = ROOTPATH."cache/article_view.lock";
//记录点击
write_file($logfile, $aid."\r\n", "a");
//更新点击
$expiretime = 60*3 ; //多久执行一次更新。如果您的服务器压力比较大,可以将此值改大点
//如果$expireTime没有更新过,就执行更新,将文件中的点击更新到数据库中
if(!file_exists($logfile_flag) || (time() - fileatime($logfile_flag)) > $expiretime ) {
touch($logfile_flag);
$viewlog = $viewarray = array();
if(@$viewlog = file($logfile)) {
@unlink($logfile);
$viewlog = array_count_values($viewlog);
foreach($viewlog as $id => $views) {
$viewarray[$views] .= ($id > 0) ? ','.intval($id) : '';
}
foreach($viewarray as $views => $ids) {
$c = rand($views*2, $views*5) ;
if(empty($ids)) continue;
$sql = "UPDATE LOW_PRIORITY ".$this->db->prep_tablename($this->article_table)." SET view_count = view_count +'$c' WHERE id IN (0$ids)" ;
$this->db->query($sql);
}
}
}
}
到顶部