点击量统计有3个模块 1 帖子详细页面模块-点击量自增,并返回当前点击量 步骤比较简单,首先连接redis服务器,接下来发送一个incr命令 使用thread:click:{$id}的形式来命名redis的键 // Connect redis server $redis = new redis(); $redis->connect('127.0.0.1', 6379); // Perform increase action $click = $redis->incr('thread:click:123'); 2 帖子列表页,返回一页帖子所有的点击量 // Connect redis server $redis = new redis(); $redis->connect('127.0.0.1', 6379); // Connect mysql server $mysql = new PDO("mysql:host=localhost;dbname=thread","root","",array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); $rs = $mysql -> query("select * from thread limit 30"); while($row = $rs -> fetch()){ $click = $redis->get('thread:click:'.$row['id']); echo $row['id']." "; echo $row['title']." "; echo $row['click'], "+", $click, "=", $row['click']+$click; echo "\n"; } 3 隔一段时间把redis中的数据转存到mysql中,并清空redis // Connect redis server $redis = new redis(); $redis->connect('127.0.0.1', 6379); // Connect mysql server $mysql = new PDO("mysql:host=localhost;dbname=thread","root","",array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); // Fetch all clicks $keys = $redis->keys('thread:click:*'); foreach ($keys as $key) { $id = substr($key,10); $click = $redis->get($key); $sql = "update thread SET `click` = `click` + $click where `id` = $id"; echo $sql,"\n"; $rs = $mysql -> query($sql); } // Delete clicks in redis $redis->delete($keys); |
|