用php实现简易的访问统计功能,计算网站的总访问量是多少,简单实用。php通过每次打开文本文件,获取文本中的数字,再进行加1后写入到文本中。因此,每次有访问就会进行累加访问数量来实现的简单访客次数的统计。

1.添加统计代码

首先在前台访问的Index控制器下加入以下代码,此段代码在高并发下也能正常使用

//$file = dirname(str_replace('\\','/',__FILE__)).'/tongji.db';表示为在当前文件夹下的tongji.db文件,要自己新建

//__FILE__为当前文件位于磁盘的绝对路径.如:G:/PHP/htdocs/www/Application/Home/Controller/tongji.db

//将访问次数写入tongji.db文件下

$file = dirname(str_replace('\\','/',__FILE__)).'/tongji.db';

//$data = unserialize(file_get_contents($file));

$fp=fopen($file,'r+');

$content='';

if (flock($fp,LOCK_EX)){

while (($buffer=fgets($fp,1024))!=false){

$content=$content.$buffer;

}

//unserialize(),此函数是将数据流反序列化成数组

$data=unserialize($content);

//设置记录键值

$total = 'total';

$month = date('Ym');

$today = date('Ymd');

$yesterday = date('Ymd',strtotime("-1 day"));

$tongji = array();

// 总访问增加

$tongji[$total] = $data[$total] + 1;

// 本月访问量增加

$tongji[$month] = $data[$month] + 1;

// 今日访问增加

$tongji[$today] = $data[$today] + 1;

//保持昨天访问

$tongji[$yesterday] = $data[$yesterday];

//保存统计数据,写入到tongji.db下

ftruncate($fp,0); // 将文件截断到给定的长度

rewind($fp); // 倒回文件指针的位置

//serialize(),此函数是将数组序列化成数据流

fwrite($fp, serialize($tongji));

flock($fp,LOCK_UN);

fclose($fp);

//输出数据,然后写入到system.php的配置文件中

$total = $tongji[$total];

$month = $tongji[$month];

$today = $tongji[$today];

$yesterday = $tongji[$yesterday]?$tongji[$yesterday]:0;

//写入conf下的system.php中可以用C()读取方便分配到模板使用

$path=$_SERVER['DOCUMENT_ROOT'].__ROOT__.'/Application/Common/Conf/system.php';

$config['TOTAL']=array('访问总数'=>$total,'本月'=>$month,'昨日'=>$yesterday,'今日'=>$today);

$data="<?php \r\n return " . var_export($config,true)."; \r\n ?>";

file_put_contents($path, $data);

2.创建可写入文件

在Admin和Home模块公用的Common\Conf\下 新建一个system.php文件,并在config.php中加入以下代码

3.写入配置文件

配置完成后,每次访问网页都会写入tongji.db文件中,利用文件锁进行高并发控制,再读取,然后写入到system.php的配置文件中

4.总结

就可以在模板中使用了

除非特殊声明,本站文章均为原创,转载请务必保留本文链接

php 真实访问次数,PHP将访问次数写入文件下相关推荐

  1. 零基础学Python-爬虫-2、scrapy框架(测试案例篇·技术点在后面文章内讲解)【测试将一篇小说的所有访问路径与标题存储到一个文件下】

    本套课程正式进入Python爬虫阶段,具体章节根据实际发布决定,可点击[python爬虫]分类专栏进行倒序观看: [重点提示:请勿爬取有害他人或国家利益的内容,此课程虽可爬取互联网任意内容,但无任何收 ...

  2. linux 访问日志ip排序,Linux通过日志文件统计IP访问次数排序

    假设我的日志文件内容如下: 218.92.217.53 - - [22/Nov/2017:17:26:27 +0800] "GET /images/rand HTTP/1.0" 2 ...

  3. 查看及修改微软Edge浏览器用户数据保存位置(包括详细历史记录(页面停留时间,页面访问次数,最后访问时间,下载历史等),Cookie,书签等)

    文章目录 Edge浏览器的用户数据大部分存储在本地的数据库文件中,目录如下 打开目录后大概有一下内容 由于是数据文件,所以需要用数据库管理软件打开,我这里用的是Navicat,打开后大概下面这样子 下 ...

  4. Hive分析函数之SUM,AVG,MIN和MAX OVER(PARTITION BY xxx order by xxx,用于求一段时间内截至到每天的累计访问次数、平均访问次数、最小访问次数、最大访问次

            Hive分析函数之SUM,AVG,MIN和MAX OVER(PARTITION BY xxx order by xxx,用于求一段时间内截至到每天的累计访问次数.平均访问次数.最小访问 ...

  5. 访问数,每次访问页数,平均停留时间,跳出率

    访问数,同一个 IP ,离开后再上一次,按 2 次算. 综合浏览量,所有页面点击访问总数. 每次访问页数,每次登陆网站平均点击的页面数( PV ). 网站平均停留时间,每次访问网站到离开经历的时间平均 ...

  6. Retrofit用Interceptor实现内外网接口自动切换访问(在内网IP访问失败的时候.访问外网接口)

    Retrofit用Interceptor实现内外网接口自动切换访问(在内网IP访问失败的时候.访问外网接口) 主要项目里面需求有2个baseurl,必须要能够根据用户的网络状况进行baseurl的重新 ...

  7. android中访问手机存储空间,android – 访问手机内部存储以推入SQLite数据库文件...

    我正在使用Netbeans和java开发我的android应用程序.当我使用模拟器时,我可以通过访问以下路径,data / data / com.example.helloandroid / data ...

  8. day03--java基础编程:面向对象,构造方法,代码块讲解,this super,static,final,访问修饰符,方法重写,向上/下造型,main方法,抽象类,接口,设计模式,异常,内部类

    1 Day06–面向对象1 1.1 面向对象 1.1.1 概念 推荐看的书:Thinking in java 概念:所谓的面向对象是一种编程思想,通过这种思想可以把生活中的复杂事情变得简单化,从原来的 ...

  9. 水平越权访问与垂直越权访问漏洞

    目录 前言 越权访问漏洞 水平越权访问漏洞 垂直越权访问漏洞 防范措施 前言 电网机巡智能管控平台是XX省电力巡检智能管控平台,辅助全省无人机巡线作业工作顺利.高效开展.由于今年互联网出现了严重的安全 ...

最新文章

  1. git 只merge部分_[Skill]俩小时掌握多人开发中git的主要用法
  2. 皮一皮:这是结婚还是华山论剑...
  3. 配置MYSQL基于GTID 主从复制详细解析及步骤
  4. 部署和调优 1.5 vsftp部署和优化-1
  5. 1.进程间的关系:终端,网络设备
  6. tomcat跳转报错_微信小程序开发:使用reLaunch跳转时报错的解决步骤
  7. jQuery插件scrollToTop 4行代码实现网站回到顶部
  8. IBM 安全部门 CTO:AI 必须被重新定义为“增强智能”
  9. jQuery向动态生成的内容添加事件响应(jquery live方法简介)
  10. Flask Flash
  11. 捡到iphone6怎么解锁_赛博朋克2077前期手枪用哪个好?2077节制结局及银杯节制解锁条件...
  12. 网络爬虫:Scrapy爬虫框架
  13. securecrt 远程映射端口
  14. java File 读取本地文件 增删改查
  15. mysql反三角函数,PostgreSQL中的函数之数学函数(正弦函数、反正弦函数、余弦函数、反余弦函数)...
  16. 2019年西南交大计算机专硕
  17. mapbox制作动态地图——storytelling(附html代码)
  18. 联想笔记本突然没声音了,但是音量却是打开得,F1亮着
  19. 背包问题之多重背包基础写法
  20. 解决低版本matlab打开高版本Matlab的.m文件时,出现中文乱码的问题。

热门文章

  1. vue-router(2)
  2. NeuSoft(2)添加系统调用
  3. ArcEngine对Blob字段赋值的方法
  4. php文件里直接写上?xml version=1.0 encoding=utf-8?出错?
  5. UA MATH575B 数值分析下 计算统计物理例题2
  6. DirectX 向量点乘和叉乘
  7. 超图iServer发布一个示例3D场景
  8. 在winform中使用三层架构学习总结
  9. 揭密Oracle之 七种武器
  10. Python之re模块 —— 正则表达式操作