为 WordPress 生成网站访问日志

下一波移动互联网入口:微信导航
January 18, 2014
为什么写作者应该告别微信公众号
January 28, 2014

为 WordPress 生成网站访问日志

对于一个网站来说,分析站点访问日志是非常重要的一件事。但是经常去服务器后台查询网站的访问日志太麻烦,而且很多vps都不带有访问日志这个功能。在这里木屋给大家分享一个小技巧,可以为 WordPress 生成网站访问日志,日志内容还是可以自定义的,这样就可以省去每次都要登录主机后台查询。

把下面的代码添加到主题的 function.php 文件中即可:
[cce_php]
make_log_file();
function make_log_file(){
//log文件名
$filename = ‘mylogs.txt’;
//去除rc-ajax评论以及cron机制访问记录
if(strstr($_SERVER[“REQUEST_URI”],”rc-ajax”)== false
&& strstr($_SERVER[“REQUEST_URI”],”wp-cron.php”)== false ) {
$word .= date(‘mdHis’,$_SERVER[‘REQUEST_TIME’] + 3600*8) . ” “;
//访问页面
$word .= $_SERVER[“REQUEST_URI”] .” “;
//协议
$word .= $_SERVER[‘SERVER_PROTOCOL’] .” “;
//方法,POST OR GET
$word .= $_SERVER[‘REQUEST_METHOD’] . ” “;
//$word .= $_SERVER[‘HTTP_ACCEPT’] . ” “;
//获得浏览器信息
$word .= getbrowser(). ” “;
//传递参数
$word .= “[“. $_SERVER[‘QUERY_STRING’] . “] “;
//跳转地址
$word .= $_SERVER[‘HTTP_REFERER’] . ” “;
//获取IP
$word .= getIP() . ” “;
$word .= “\n”;
$fh = fopen($filename, “a”);
fwrite($fh, $word);
fclose($fh);
}
}
//获取IP地址,网上现成代码
function getIP() //get ip address
{
if (getenv(‘HTTP_CLIENT_IP’))
{
$ip = getenv(‘HTTP_CLIENT_IP’);
}
else if (getenv(‘HTTP_X_FORWARDED_FOR’))
{
$ip = getenv(‘HTTP_X_FORWARDED_FOR’);
}
else if (getenv(‘REMOTE_ADDR’))
{
$ip = getenv(‘REMOTE_ADDR’);
}
else
{
$ip = $_SERVER[‘REMOTE_ADDR’];
}
return $ip;
}
//获取浏览器信息,移动端,平板电脑数据还未加上。
function getbrowser()
{
$Agent = $_SERVER[‘HTTP_USER_AGENT’];
$browser = ”;
$browserver = ”;

if(ereg(‘Mozilla’, $Agent) && ereg(‘Chrome’, $Agent))
{
$temp = explode(‘(‘, $Agent);
$Part = $temp[2];
$temp = explode(‘/’, $Part);
$browserver = $temp[1];
$temp = explode(‘ ‘, $browserver);
$browserver = $temp[0];
$browserver = $browserver;
$browser = ‘Chrome’;
}
if(ereg(‘Mozilla’, $Agent) && ereg(‘Firefox’, $Agent))
{
$temp = explode(‘(‘, $Agent);
$Part = $temp[1];
$temp = explode(‘/’, $Part);
$browserver = $temp[2];
$temp = explode(‘ ‘, $browserver);
$browserver = $temp[0];
$browserver = $browserver;
$browser = ‘Firefox’;
}
if(ereg(‘Mozilla’, $Agent) && ereg(‘Opera’, $Agent))
{
$temp = explode(‘(‘, $Agent);
$Part = $temp[1];
$temp = explode(‘)’, $Part);
$browserver = $temp[1];
$temp = explode(‘ ‘, $browserver);
$browserver = $temp[2];
$browserver = $browserver;
$browser = ‘Opera’;
}
if(ereg(‘Mozilla’, $Agent) && ereg(‘MSIE’, $Agent))
{
$temp = explode(‘(‘, $Agent);
$Part = $temp[1];
$temp = explode(‘;’, $Part);
$Part = $temp[1];
$temp = explode(‘ ‘, $Part);
$browserver = $temp[2];
$browserver = $browserver;
$browser = ‘Internet Explorer’;
}
if($browser != ”)
{
$browseinfo = $browser.’ ‘.$browserver;
}
else
{
$browseinfo = $_SERVER[‘HTTP_USER_AGENT’];
}
return $browseinfo;
}
[/cce_php]

ok,在你的站点根目录上就会生成 mylogs.txt 这个文件,通过 http://www.muwu.me/mylogs.txt 可以直接访问。这样生成的网站日志会比 CNZZ 等第三方统计工具生成的日志精准的多,你可以通过日志得知哪些人访问哪些文件,哪些蜘蛛爬行过了等等信息。

26 Comments

  1. tumutanzi says:

    这个日志文件得多大呀?机器人访问量很大的,比自然人访问量多多了。

  2. 独自流浪 says:

    日志还是用apache或者nginx自带的,他们是调用系统底层的某个东西进行写日志的。用PHP的file函数写日志,每次请求都必须等这个日志脚本跑完,而这个又是IO操作,还带锁,访问量起来之后会很麻烦的。

  3. 谷歌分析,百度统计,一般够用了

  4. 博客好像速度相当不错

  5. anopos says:

    这个厉害啦。

  6. 马文建 says:

    不建议这么做,弊端有二:第一、影响磁盘I/O速度;第二、对同一文件的读写涉及到锁机制,因为Write操作是需要以独占方式进行访问的,应该会影响到服务器的响应速度。高并发的情况下弊端尤为厉害!一般日志文件应该先写到内存中,然后定期持久化到硬盘。

  7. 超级玛丽 says:

    网站换主题啦,很清爽简洁

  8. Louis Han says:

    会不会增加function运行的负担啊

  9. 不要用PHP去做这个日志,应该用nginx生成的access.log然后配合软件进行分割,分析

  10. 陌小雨 says:

    怎么看不到博主的呢?

  11. cy says:

    代码不太好使了。

Leave a Reply

Your email address will not be published. Required fields are marked *