如何实现对网站页面访问量的统计(javaweb和php)

一、总结

一句话总结:其实很简单啦,每访问一次那个页面对应的index函数(控制器中的那个函数)访问次数就加1就可以了。

1、javaweb中如何实现对网站页面访问量的统计?

用拦截器+定时更新

要对页面访问量统计也就是pv,主要就是拦截,写一个拦截器类实现HandlerInterceptor接口,拦截所有请求

然后拦截请求需要做的是什么?从数据库取出访问量?然后加1?这显然是不合理的,因为请求太多了,对数据库的频繁交互应该避免,

2个小时(自定义:时间越短越不容易造成访问量数据丢失)

2、thinkphp中如何实现对网站页面访问量的统计?

thinkphp中真实超级简单

每访问一次那个页面对应的index函数(控制器中的那个函数)访问次数就加1就可以了。

记得加1的时候用自增函数(setInc)就好

二、javaweb中如何实现对网站页面访问量的统计?

我用的springmvc,大致讲讲自己的思路吧:

要对页面访问量统计也就是pv,主要就是拦截,写一个拦截器类实现HandlerInterceptor接口,拦截所有请求,但是需要注意的是,配置拦截器的时候

需要排除不拦截的请求,因为对于静态资源css,js,以及图片,还有后台管理系统我们是不需要拦截的,我们只拦截用户访问的页面,也就是你展示

给用户的那些页面,配置拦截大概这样配置

	<mvc:interceptor>
<!-- 拦截路径 -->
<mvc:mapping path="/**" />
<mvc:exclude-mapping path="后台管理url就不透露了"/><!-- 不拦截后台管理 -->
<mvc:exclude-mapping path="/css/**"/>
<mvc:exclude-mapping path="/js/**"/>
<mvc:exclude-mapping path="/images/**"/>
<mvc:exclude-mapping path="/fonts/**"/>
<bean class="com.colin.interceptor.InterceptAllRequest"/>
</mvc:interceptor>

然后拦截请求需要做的是什么?从数据库取出访问量?然后加1?这显然是不合理的,因为请求太多了,对数据库的频繁交互应该避免,

我想的是写一个监听器,servletContextListener,监听servletContext的初始(只在服务器启动的时候被创建),服务器启动时候去数据库中取出访问量,

放到servletContext(全局的域,在其他请求中都可以取出来),然后每次一个请求都把放在servletContext中的访问量加1(这个是在拦截器中做的事情),在初始化servletContext时还需要做一个事情,开启线程定时把servletContext中的访问量存储到数据库中,如何定时执行?我想的是写一个循环,执行一次循环就让线程休眠

2个小时(自定义:时间越短越不容易造成访问量数据丢失),后来偶然看到了jdk文档中一个类,Timer,一个定时器,详细参考文档,它的访问可以实现定时执行任务,原理估计也差不多吧,这大概就是实现过程,具体代码就不贴了。有个比较严重的问题没有考虑到:由于ServletContext在内存中

只有一个对象,并发访问可能会造成线程安全问题,初步想在ServletContext中当一个线程安全的集合,数据的存取放在集合中

 
参考:如何实现对网站页面访问量的统计? - CSDN博客
https://blog.csdn.net/qq_37667364/article/details/79326243
 
 

三、thinkPHP实现新闻访问量统计

public function detail(){
$this->assign('page_title','新闻中心');
$id=I('id',0,'int');
$newsModel=M('News');
// 新闻点击量的实现,借助于setInc()函数,每访问一次新闻字段“in_on”加1
$newsModel->where(array('id'=>$id))->setInc('in_on',1);
$news=$newsModel->find($id);
$this->assign('news',$news);
$this->display();
}

在新闻详细页面控制器中加入
$newsModel->where(array('id'=>$id))->setInc('in_on',1);
$news=$newsModel->find($id);

利用setInc实现没访问一次字段‘in_on’的值加1,这里字段“in_on”的初始值为0.

 

如何实现对网站页面访问量的统计(javaweb和php)的更多相关文章

  1. Spring Boot入门(12)实现页面访问量统计功能

      在日常的网站使用中,经常会碰到页面的访问量(或者访问者人数)统计.那么,在Spring Boot中该如何实现这个功能呢?   我们的想法是比较简单的,那就是将访问量储存在某个地方,要用的时候取出来 ...

  2. jsp统计页面访问量和刷访问量的简单使用

    ~Jsp可以进行简单的页面访问量统计,当然也可以使用Jsp刷访问量. 1:第一种使用全局变量<%! int i=0;%>进行页面的访问量统计,只有新打开一个浏览器才可以进行统计. 2:第二 ...

  3. 如何实现ASP.NET中网站访问量的统计

    如何实现ASP.NET中网站访问量的统计 2009-07-30 15:50 佚名 网翼教程网 字号:T | T 本文介绍了如何在asp.net中进行网站访问量的统计. AD:51CTO 网+ 第十二期 ...

  4. asp.net 在线人数统计\页面访问量

    1.新建网站,添加几个窗体.webForm1.aspx ,ViewStateForm.aspx 2.在网站的根目录下添加全局应用程序类“Global.aspx” .(重要) 3.在“Global.as ...

  5. PHP文件操作,多行句子的读取,file()函数,file_get_contents()函数,file_put_contents()函数,is_file,统计网站pv (访问量),文件的复制 copy,文件重命名 rename,删除文件 unlink

    php中添加utf-8: header("Content-type:text/html;charset='UTF-8'"); 文件操作步骤: 1.在同一目录下建立一个file.tx ...

  6. Web并发页面访问量统计实现

    Web并发页面访问量统计实现 - huangshulang1234的博客 - CSDN博客https://blog.csdn.net/huangshulang1234/article/details/ ...

  7. 网站页面优化必然趋势—WebP 图片!

    本文梗概:众所周知,浏览器可以通过 HTTP 请求的 Accpet 属性 来指定接收的内容类型.依靠这个技术,可以在不修改任何 HTML/CSS 或者图片的情况下,向浏览器提供优化的图片,从而降低带宽 ...

  8. 【转载】国内网站博客数据统计选免费Google Analytics还是百度统计

    [转载]国内网站博客数据统计选免费Google Analytics还是百度统计 Google Analytics谷歌统计是我用的第一个网站统计工具,当然现在也一直在用.Google Analytics ...

  9. Django訪问量和页面PV数统计

    http://blog.csdn.net/pipisorry/article/details/47396311 以下是在模板中做一个简单的页面PV数统计.model阅读量统计.用户訪问量统计的方法 简 ...

随机推荐

  1. feign client传递对象

    http://bbs.springcloud.cn/d/134-feign-client server端申明 @RestController public class HelloController ...

  2. java动态导出PDF(利用itext)

    项目基于ssm框架,使用itext动态导出pdf文件: 1.引入两个jar包:itextpdf-5.5.5.jar.itext-asian-5.2.0.jar 说明: 1.itextpdf-5.5.5 ...

  3. 深入理解JavaScript定时机制

    容易欺骗别人感情的JavaScript定时器 JavaScript的setTimeout与setInterval是两个很容易欺骗别人感情的方法,因为我们开始常常以为调用了就会按既定的方式执行, 我想不 ...

  4. dmesg---检查和控制内核的环形缓冲区

    dmesg命令被用于检查和控制内核的环形缓冲区.kernel会将开机信息存储在ring buffer中.您若是开机时来不及查看信息,可利用dmesg来查看.开机信息保存在/var/log/dmesg文 ...

  5. cxf 实例解读

    1.sample 实例之一---java_first_pojo 服务端发布服务的方法: 1 HelloWorldImpl helloworldImpl = new HelloWorldImpl(); ...

  6. mysql查询今天,昨天,近7天,近30天,本月,上一月数据

    近期项目中用到了查询当月数据记录的功能,最初的想法是在逻辑业务里构造好时间段进行查询,当写sql语句时感觉挺麻烦.所以就到网上搜索了一下,看看是不是能有简单的方法.果然.网络资源非常强大.以下结合我的 ...

  7. Codeforces 327A-Flipping Game(暴力枚举)

    A. Flipping Game time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  8. 有关c语言指针的总结

    #include<stdio.h> void main() { int a[3]={1,3,5};//一维数组 int *num[3]={&a[0],&a[1],& ...

  9. ajax --- 解决ajax跨域请求导致session失效的问题

    起因:http是无状态的,因此我们通常需要用到cookie以及session来保存状态,session是在服务器端存储的,会和cookie一起使用,设置了session之后,会发送给浏览器一个cook ...

  10. Cisco交换机解决网络蠕虫病毒入侵问题

    Cisco交换机解决网络蠕虫病毒入侵问题          今年来网络蠕虫泛滥给ISP和企业都造成了巨大损失,截至目前已发现近百万种病毒及木马.受感染的网络基础设施遭到破坏,以Sql Slammer为 ...