背景两年前,为了有地方记录自己的一些技术心得,我用wordpress搭建了一个个人站点,至今已经写了上百篇博文。一直有一个问题没有解决,就是如何统计博客的访问量。我也安装了wordpress统计插件WPStatistics,但是实际效果并不好。原因是我关心每篇文章每天的访问量和访问者所在的城市。你也可以在插件中找到这些数据,但是插件中也夹杂了很多不需要的数据,而且没有按照我预期的格式进行组织。总之,不好用。后来又试了百度统计,效果不如WP统计。基于以上情况,我考虑自己开发一个博客流量分析平台。方案中需要记录的数据是为了实现核心功能,字段中记录的字段不多。mysql表结构如下CREATETABLEwp_statistic(idINTUNSIGNEDNOTNULLPRIMARYKEYAUTO_INCREMENT,ipvarchar(20),locationvarchar(200),titlevarchar(200),post_idint,referrervarchar(500),visit_timetimestampNULLDEFAULTCURRENT_TIMESTAMP)ip:visitoriplocation:访客位置title:文章标题post_id:文章idreferrer:referrervisit_time:访问时间,默认当前时间如何根据IP获取位置?百度有接口,但是接口需要一个timestamp字段,这个字段要按照一些规则进行hash。找了一段时间,没法破解,就放弃了。最后我选择了太平洋网络接口,不仅格式多样,而且没有限制。curlhttp://whois.pconline.com.cn/ip.jsp?ip=112.47.173.143福建省泉州市易通科技选型我的主要语言是java,身份也是java开发,但是看过的同学我的博客你应该知道,我对前端也有一些经验。虽然我不精通,但是写写管理系统就够了。前端选择vue是因为简单易学。ui选择vuetifyjs。这是我第一次遇到这个答案。对比国内的antdesign和elementui,感觉更别出心裁。总之我安利了,我还为这个框架开了一个admin框架,后面的内容会提到。Java当然是首选后端,但是考虑到服务器配置捉襟见肘,阿里云ECS1核1G,已经跑了一个wordpress,再跑一个jvm就困难了,所以选择PHP做后端是不行的-端开发语言,让现有的Apache都可以用PHP,因为现在也在用和学PHP,所以代码中可能有一些写的不合理的地方,还望各位PHP高手指出问题.该过程的一般流程如下。在wordpress页面插入一段jsjs会创建一个script标签。借鉴jsonp的思想,script标签可以绕过跨域问题。后台记录请求信息,导入js代码,需要修改wordpress页面代码,引入一段js,向后台传输数据。基本上大部分网站分析的实现原理都是类似的,也有很多注意事项要介绍。这里建议修改主题目录header.php文件,具体路径为wp-content/themes/{主题名称}/header.php,导入代码如下/log/server.php为后端数据接收接口server.phprequest('http://whois.pconline.com.cn/ip.jsp?ip='.$ip);$location=iconv('GB2312','UTF-8',$resopnse['body']);$wpdb->query($wpdb->prepare("INSERTINTOwp_statistic(ip,location,title,ua,referrer)VALUES(%s,%s,%s,%s,%s)",$ip,$location,$title,$ua,$referrer));?>Wordpress本身自带数据库操作类wpdb和curl类WP_Http_Curl,直接调用获取ip返回GBK即可,需要通过js和server.php的配合转换为UTF-8,访问数据成功进来,接下来就是开发管理界面展示前端使用基于vuetifyjs开发的admin框架。先来看看效果吧。该框架包括以下基本功能。登录页面菜单配置应用信息配置单页访问能力打包查询夜间等以上述页面为例,页面展示用于实时获取数据,前端代码如下
