1/** 2 * 博客、文章访问量缓存 3 * useage: makeCount(int 博客ID [, int 文章ID [, int 更新间隔(1800s) [, int 博客访问量 [, int 文章访问量]]]] ) 4 * @author MrAsong 2012-04-26 5 */ 6function makeCount($bid=1, $pid=0, $update_interval=1800, $num_home=50, $num_post=15){ 7 global $wpdb; 8 9 $count_file = ABSPATH . 'cache/blogcount_'.$bid.'.js' ; 10 11 if( $json = @file_get_contents($count_file) ){ 12 $c = json_decode($json,true); //获取数据 13 }else{ //如果不存在,创建count文件 14 $c = array( 15 'create' => time(), //上次更新时间 16 'blogcount' => 0 17 ); 18 } 19 20 if( $pid == 0 ){ // 判断是否为首页 21 $c['blogcount'] = $c['blogcount'] + 1 ; //count+1 22 23 if( $c['blogcount'] >= $num_home && (time()-$c['create']) > $update_interval ){//更新博客访问量 24 $sql = "UPDATE $wpdb->blogs SET count=count+{$c['blogcount']} WHERE blog_id=$bid"; 25 $wpdb->query($sql); 26 $c['create'] = time(); 27 $c['blogcount'] = 0; 28 } 29 }else{ 30 $c['post'][$pid]['c'] = isset($c['post'][$pid]['c']) ? ($c['post'][$pid]['c'] + 1) : 1 ; 31 $c['post'][$pid]['t'] = isset($c['post'][$pid]['t']) ? $c['post'][$pid]['t'] : time(); 32 if( $c['post'][$pid]['c'] >= $num_post && (time()-$c['post'][$pid]['t']) > $update_interval ){//更新博客访问量 33 $sql = "UPDATE $wpdb->posts SET count=count+{$c['post'][$pid]} WHERE ID=$pid"; 34 $wpdb->query($sql); 35 unset($c['post'][$pid]); //删除此元组 36 } 37 } 38 39 if($fp = @fopen($count_file, 'wb')) { 40 @fwrite( $fp, json_encode($c) );//写入json 41 fclose($fp); 42 } 43 44}