对于一个网站来说,分析站点访问日志是非常重要的一件事。但是经常去服务器后台查询网站的访问日志太麻烦,而且很多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 等第三方统计工具生成的日志精准的多,你可以通过日志得知哪些人访问哪些文件,哪些蜘蛛爬行过了等等信息。

参与评论

  • cy游客
    代码不太好使了。
    5年前 (2014-12-25)
    13楼
    回复
  • 陌小雨游客
    怎么看不到博主的呢?
    6年前 (2014-10-30)
    12楼
    回复
  • 木屋站长
    什么
    6年前 (2014-10-30)
    回复
  • 陌小雨游客
    http://www.muwu.me/mylogs.txt,这个
    6年前 (2014-10-30)
    回复
  • 木屋站长
    这东西就不放出来了
    5年前 (2014-10-31)
    回复
  • 好笑网游客
    来看看
    6年前 (2014-09-11)
    11楼
    回复
  • 五月里徜徉的小猫咪游客
    不要用PHP去做这个日志,应该用nginx生成的access.log然后配合软件进行分割,分析
    6年前 (2014-03-17)
    10楼
    回复
  • 木屋站长
    这个方法不错
    6年前 (2014-03-17)
    回复
  • Louis Han游客
    会不会增加function运行的负担啊
    6年前 (2014-02-10)
    9楼
    回复
  • 木屋站长
    这个用了的话肯定是会出现这个问题的。
    6年前 (2014-03-05)
    回复
  • 超级玛丽游客
    网站换主题啦,很清爽简洁
    6年前 (2014-02-07)
    8楼
    回复
  • 木屋站长
    嗯,现在这个主题,比较利于读者阅读
    6年前 (2014-02-07)
    回复
  • 马文建游客
    不建议这么做,弊端有二:第一、影响磁盘I/O速度;第二、对同一文件的读写涉及到锁机制,因为Write操作是需要以独占方式进行访问的,应该会影响到服务器的响应速度。高并发的情况下弊端尤为厉害!一般日志文件应该先写到内存中,然后定期持久化到硬盘。
    6年前 (2014-02-01)
    7楼
    回复
  • Ryobi Battery游客
    这个很厉害
    6年前 (2014-02-01)
    6楼
    回复
  • 木屋站长
    可以试试哦~
    6年前 (2014-02-01)
    回复
  • anopos游客
    这个厉害啦。
    6年前 (2014-01-28)
    5楼
    回复
  • 木屋站长
    你可以试试哈~
    6年前 (2014-01-28)
    回复
  • 晨风²º¹³游客
    博客好像速度相当不错
    6年前 (2014-01-27)
    4楼
    回复
  • 木屋站长
    应该还好吧。
    6年前 (2014-01-27)
    回复
  • tennfy游客
    有道理
    6年前 (2014-03-07)
    回复