产品需要监测论坛帖子的曝光量,但是苦于没有适合的工具进行监测,于是用蜂巢LAMP镜像快速搭建了一个曝光监测服务。
曝光监测的思路是
提供一个1像素gif图片的链接,在论坛帖子中通过/<img src="..." />来访问图片链接,当论坛帖打开时,通过gif链接的访问来统计曝光量;曝光渠道则是通过链接传入的参数来区分;在服务中,把gif访问链接重定向到一个统计php中,将访问的时间戳、渠道计入MySQL。
具体实践过程
1,先申请一个容器,部署LAMP镜像。
2,然后修改 /etc/apache2/apache2.conf 的日志输出格式,将%h换成%{X-Real-IP},获取真实的访问IP
3,在/var/www中修改 .htaccess ,如果没有这个文件就创建一个
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^s.gif.*$ count.php [L,R=301]
</IfModule>
4,设置数据库用户、权限、表,具体过程略
5,在/var/www下创建一个 count.php 和一个1像素的 a.gif
<?php
$con=mysql_connect("127.0.0.1:7896","counter","1234");
if(!$con)
{
die ('Could not connect' . mysql_error());
}
mysql_select_db("counter", $con);
$sql= "INSERT INTO record (ip, timestamp, act) VALUES('" . $_SERVER['REMOTE_ADDR'] . "','" .$_SERVER['REQUEST_TIME'] . "','" . $_SERVER['REQUEST_URI'] . "')";
mysql_query($sql);
mysql_close($con);
//返回一个真实的1像素图片数据
$gifurl="/a.gif";
header("Content-type:image/gif");
header("Content-Length:".filesize($gifurl));
header("Content-Disposition: attachment; filename=" . urldecode($gifurl));
readfile($gifurl);
exit();
?>
至此,统计代码已经准备好。在论坛帖子中增加/<img src=" http://host/s.gif?docone "/> ,即可统计到帖子曝光量数据。