网站流量统

原创 2016年10月17日 12:08:38



//AdminController.class.php
<?php

// +----------------------------------------------------------------------
// | name 流量统计插件后台管理
// +----------------------------------------------------------------------
// | Copyright (c) 2012-2014 https://www.abk0.com/, All rights reserved.
// +----------------------------------------------------------------------
// | Author: stone
// +----------------------------------------------------------------------

namespace Addon\Dyapp\Controller;

use Addons\Util\Adminaddonbase;

class AdminController extends Adminaddonbase {

    public function index() {
        //取得当天数据
        $time = date('y-m-d',time());
        $datasa = M("dyapp")->where("time='{$time}'")->find();
        $data["pv"] = $datasa["pv"];
        $data["ip"] = $datasa["ip"];
        $data["dip"] = $datasa["dip"];
        //取得昨天数据
         $times = time()- ( 1  *  24  *  60  *  60 );
         $datasav = M("dyapp")->where("time='{$times}'")->find();
        $data["spv"] = $datasav["pv"];
        $data["sip"] = $datasav["ip"];
        $data["sdip"] = $datasav["dip"];
        //取得最高纪录
        $datasaz = M("dyapp")->order('MAX(pv)')->find();
        $data["zpv"] = $datasaz["pv"];
        $data["time_zpv"] = $datasaz["time"];
        
        $datasaa = M("dyapp")->order('MAX(ip)')->find();
        $data["zip"] = $datasaa["ip"];
        $data["time_zip"] = $datasaa["time"];
        
        $datasab = M("dyapp")->order('MAX(dip)')->find();
        $data["zdip"] = $datasab["dip"];
        $data["time_zdip"] = $datasab["time"];

        $this->assign('data',$data);
        $this->display();
    }

}






<?php if (!defined('SHUIPF_VERSION')) exit(); ?>
<admintemplate file="Common/Head"/>
<body class="J_scroll_fixed">
<div class="wrap">
  <Admintemplate file="Common/Nav"/>

<style type="text/css">
<!--
tbody tr {
    height: 30px;
    border-top: 1px #dcdcdc solid;
    border-right: 1px #dcdcdc solid;
}
tbody tr td {
    border-right: 1px #dcdcdc solid;
    text-align: right;
    padding: 10px;
}
tbody tr td span {
    padding: 10px;
}
tbody .add {
    text-align: left;
}
-->
</style>  

<div style="border: 1px #dcdcdc solid;">
  <div style=" height: 30px; border-bottom: 1px #dcdcdc solid;background-color: #dcdcdc;color: #484848;line-height: 30px;"><h3 style="margin-left: 10px;">现在时间: <?php echo date("Y年m月d H:i:s",time());?></h3></div>
<table cellspacing='0' cellpadding='0'>
         <col width="200px" />
         <col/>
   <thead>
            <tr>
               <th></th>
               <th></th>
            </tr>
         </thead>
         <tbody>
            <tr><td>今天访问量(pv)</td><td class="add"><span>{$data.pv}</span></td></tr>
            <tr><td>今天ip访问量</td><td class="add"><span>{$data.ip}</span></td></tr>
            <tr><td>今天独立ip访问数</td><td class="add"><span>{$data.dip}</span></td></tr>
            <tr><td>昨天(pv)</td><td class="add"><span>{$data.spv}</span></td></tr>
            <tr><td>昨天(ip)</td><td class="add"><span>{$data.sip}</span></td></tr>
            <tr><td>历史最高(pv)</td><td><span>{$data.zpv}</span>[{$data.time_zpv}]</td></tr>
            <tr><td>历史最高(ip)</td><td><span>{$data.zip}</span>[{$data.time_zip}]</td></tr>
            <tr><td>历史最高独立用户访问</td><td><span>{$data.dip}</span>[{$data.time_zdip}]</td></tr>
        </tbody>
</table>
</div>  

</div>
<script src="{$config_siteurl}statics/js/common.js?v"></script>
</body>
</html>
//视图层index.php
<?php if (!defined('SHUIPF_VERSION')) exit(); ?>
<admintemplate file="Common/Head"/>
<body class="J_scroll_fixed">
<div class="wrap">
  <Admintemplate file="Common/Nav"/>

<style type="text/css">
<!--
tbody tr {
    height: 30px;
    border-top: 1px #dcdcdc solid;
    border-right: 1px #dcdcdc solid;
}
tbody tr td {
    border-right: 1px #dcdcdc solid;
    text-align: right;
    padding: 10px;
}
tbody tr td span {
    padding: 10px;
}
tbody .add {
    text-align: left;
}
-->
</style>  

<div style="border: 1px #dcdcdc solid;">
  <div style=" height: 30px; border-bottom: 1px #dcdcdc solid;background-color: #dcdcdc;color: #484848;line-height: 30px;"><h3 style="margin-left: 10px;">现在时间: <?php echo date("Y年m月d H:i:s",time());?></h3></div>
<table cellspacing='0' cellpadding='0'>
         <col width="200px" />
         <col/>
   <thead>
            <tr>
               <th></th>
               <th></th>
            </tr>
         </thead>
         <tbody>
            <tr><td>今天访问量(pv)</td><td class="add"><span>{$data.pv}</span></td></tr>
            <tr><td>今天ip访问量</td><td class="add"><span>{$data.ip}</span></td></tr>
            <tr><td>今天独立ip访问数</td><td class="add"><span>{$data.dip}</span></td></tr>
            <tr><td>昨天(pv)</td><td class="add"><span>{$data.spv}</span></td></tr>
            <tr><td>昨天(ip)</td><td class="add"><span>{$data.sip}</span></td></tr>
            <tr><td>历史最高(pv)</td><td><span>{$data.zpv}</span>[{$data.time_zpv}]</td></tr>
            <tr><td>历史最高(ip)</td><td><span>{$data.zip}</span>[{$data.time_zip}]</td></tr>
            <tr><td>历史最高独立用户访问</td><td><span>{$data.dip}</span>[{$data.time_zdip}]</td></tr>
        </tbody>
</table>
</div>  

</div>
<script src="{$config_siteurl}statics/js/common.js?v"></script>
</body>
</html>









//DyappAddon.class.php
<?php
/**
* +----------------------------------------------------------------------
* | name 流量统计插件 插件
* +----------------------------------------------------------------------
* | Copyright (c) 2012-2014 https://www.abk0.com/, All rights reserved.
* +----------------------------------------------------------------------
* | Author: alvye 
* +----------------------------------------------------------------------
 */

namespace Addon\Dyapp;

use \Addons\Util\Addon;

class DyappAddon extends Addon {

    //插件信息
    public $info = array(
        'name' => 'Dyapp',
        'title' => '访问统计',
        'description' => '记录访问者信息',
        'status' => 1,
        'author' => 'alvye',
        'version' => '1.0.1',
        'has_adminlist' => 1,
        'sign' => 'deyou',
    );

    //有开启插件后台情况下,添加对应的控制器方法
    //也就是插件目录下 Action/AdminController.class.php中,public属性的方法!
    //每个方法都是一个数组形式,删除,修改类需要具体参数的,建议隐藏!
    public $adminlist = array(
        array(
            //方法名称
            "action" => "",
            //附加参数 例如:a=12&id=777
            "data" => "",
            //类型,1:权限认证+菜单,0:只作为菜单
            "type" => 0,
            //状态,1是显示,0是不显示
            "status" => 1,
            //名称
            "name" => "",
            //备注
            "remark" => "",
            //排序
            "listorder" => 0,
        ),
    );

    //安装
    public function install() {

        //1、添加数据表
        $slq = $this->addonPath . 'dyapp.sql';
        $sql = file_get_contents($slq);
        $sql = $this->sqlSplit($sql, C("DB_PREFIX"));
        if (!empty($sql) && is_array($sql)) {
            foreach ($sql as $sql_split) {
                M()->execute($sql_split);
            }
        }
    
      return true;
    }

    //卸载
    public function uninstall() {
        $tablename = C("DB_PREFIX") . 'dyapp';
        M()->query("DROP TABLE $tablename");
        $tablename = C("DB_PREFIX") . 'dyapp_ip';
        M()->query("DROP TABLE $tablename");   
        return true;
    }

    /**
     * 分析处理sql语句,执行替换前缀都功能。
     * @param string $sql 原始的sql
     * @param string $tablepre 表前缀
     */
    private function sqlSplit($sql, $tablepre) {
        if ($tablepre != "lvyecms_")
            $sql = str_replace("lvyecms_", $tablepre, $sql);
        $sql = preg_replace("/TYPE=(InnoDB|MyISAM|MEMORY)( DEFAULT CHARSET=[^; ]+)?/", "ENGINE=\\1 DEFAULT CHARSET=utf8", $sql);
        if ($r_tablepre != $s_tablepre)
            $sql = str_replace($s_tablepre, $r_tablepre, $sql);
        $sql = str_replace("\r", "\n", $sql);
        $ret = array();
        $num = 0;
        $queriesarray = explode(";\n", trim($sql));
        unset($sql);
        foreach ($queriesarray as $query) {
            $ret[$num] = '';
            $queries = explode("\n", trim($query));
            $queries = array_filter($queries);
            foreach ($queries as $query) {
                $str1 = substr($query, 0, 1);
                if ($str1 != '#' && $str1 != '-')
                    $ret[$num] .= $query;
            }
            $num++;
        }
        return $ret;
    }
    
    //实现行为 app_init
    //$param 是行为传递过来的参数
    public function app_init($param = NULL) {
       //插件主要逻辑
       $time = date('y-m-d',time());
       $Dao = M("dyapp");
       $datasa = $Dao->where("time='{$time}'")->find();
       if(empty($datasa)){
          $data["time"] = $time;
          $id = $Dao->add($data);
       }else{
          $id = $datasa["id"];
       }
          $time = date('y-m-d',time());
           $ip = get_client_ip();
           $data = M("dyapp_ip")->where("ip='{$ip}'")->find();
         if(empty($data)){  //如果ip不存在
           $add["ip"] = $ip;
           $add["time"] = $time;
           $ta= D("dyapp_ip");
           $ta->create($add);
           $ta->add();
           $sip = M("dyapp")->where("id='{$id}'")->setInc("ip",1);  // 当天ip数 +1
        }else{
         $time_dip = time();
          $_time_dip = session('time_dip');
          if($time_dip <=$_time_dip){
           $sip = M("dyapp")->where("id='{$id}'")->setInc("dip",1); //独立ip +
          }else{
            session("time_dip",time()+86400); //隔一天
          }
        }
        $_time_pv = session('time_pv');
        if(!empty($time_pv)){
          $time_pv = time();
          if($_time_pv <= $time_pv){
            $sip = M("dyapp")->where("id='{$id}'")->setInc("pv",1); //pv +1
            session("time_pv",time()+900);  //1时(h)=3600秒(s) 30分(min)=1800秒(s) 15分(min)=900秒(s)
          }           
        }else{
          session("time_pv",time()+900);  //1时(h)=3600秒(s) 30分(min)=1800秒(s) 15分(min)=900秒(s)
        }
    }

}
//dyapp.sql
# Host: https://www.abk0.com
# Date: 2016-10-17 03:14:39
# author: alvye

#
# Structure for table "lvyecms_dyapp"
#

DROP TABLE IF EXISTS `lvyecms_dyapp`;
CREATE TABLE `lvyecms_dyapp` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pv` int(11) DEFAULT '0' COMMENT '当天pv数',
  `ip` int(11) DEFAULT '0' COMMENT '当天ip数',
  `dip` int(11) DEFAULT '0' COMMENT '当天独立ip数',
  `time` varchar(50) DEFAULT NULL COMMENT '记录当天时间',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='访问记录';

#
# Structure for table "lvyecms_dyapp_data"
#

DROP TABLE IF EXISTS `lvyecms_dyapp_ip`;
CREATE TABLE `lvyecms_dyapp_ip` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ip` varchar(100) NOT NULL DEFAULT '' COMMENT 'ip库',
  `time` date DEFAULT NULL COMMENT '记录时间',
  PRIMARY KEY (`id`,`ip`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='ip库';






版权声明:欢迎转载

相关文章推荐

【原创】网站流量突然下降应该怎么找原因?

之前聊过,网站运营的最关键的工作的就是引流,没有人网站运营后面的工作无法开展,所以我们每天都要关注自己网站的流量。通常我们都会给网站安装统计代码,然后每天收集网站用户访问的数据。但是很多时候我们都会碰...

5大实用方法提升网站流量

大家应该都晓得,好网站只要用户体验做好了才干留住客户,这样才不会让网站流量跳出率太高。很多人都在寻觅流量来源的技巧,常常无视了最为重要的用户体验,所以首先要做好用户体验,其次才是提升流量!由于想让网站...

关于网站流量的监控

--------适用于Web和Email监控 我们这里的流量指的是PV而非带宽。关于流量监控的第三方应用已经很多,像谷歌的GA,百度的统计,还有51.la,cnzz ,量子等等。功能大多...

总结如何提升网站流量之方法

1.论坛推广 这里所说的论坛推广绝对不是在论坛里一个一个版贴广告,也不是将网站地址加在签名里然后疯狂刷屏,那样既耗费精力而且效果也不见得好,论坛管理员只要点几下鼠标就能将你的帖子全部删除,顺便封...
  • helonSY
  • helonSY
  • 2012年01月06日 17:07
  • 2134

网站流量的统计中的IP、PV、UV

ip、uv和pv的定义:   IP(独立IP): 即Internet Protocol,指独立IP数。00:00-24:00内相同IP地址之被计算一次。   PV(访问量): 即Page View...
  • ptspzy
  • ptspzy
  • 2015年08月04日 01:06
  • 441

个人网站流量和盈利的关系

个人网站流量和金钱的关系 可以算出每个月赚到的钱,以下数据仅供参考,列出的数据为一般统计数据。   站点纯属于各类的个人站点。   网站每天访问量、运做每个月赚到的钱。   1000...

网站流量转化为新闻饥饿的消费者,如何查找博客的热门话题

网站流量转化为新闻饥饿的消费者,如何查找博客的热门话题 在我看来,连接到您的网站的博客是单一的最好的方式保持当前网站的访问者回来到您的网站,吸引新的网站的访问者,并教育您的访问者,您的网站主...

妙解网站流量的处理办法

网站优化我们最看重的是什么?流量,不错流量才是我们所关心的主要要素。如果一个网站没有流量,那么谈再多也不过是空想奢望,一个网站没有流量,就如无源之水无本之木。流量才是衡量一个网站的基础与标准。我们固然...

网站流量的高低究竟与alexa排名有什么关系呢?

很多客户在咨询过程中问到这样一些问题:为什么我的网站统计到的流量在上升而我的ALEXA排名显示的流量却在下降?网站的流量和ALEXA排名有什么关系?www.alexa.vc网站排名查询里面查询到的网站...

网站流量分析之术语 UV, PV

今天在网络上看别人的博客, 有一篇文件讲网站流量分析水平。 笔者现在工作的一部分就是对每天2千万的流量数据进行分析, 找出用户的行为特点, 及当前系统的负载等 内容。文章提到几个名词“网站的UV,PV...
  • php_boy
  • php_boy
  • 2011年07月18日 15:15
  • 1181
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:网站流量统
举报原因:
原因补充:

(最多只允许输入30个字)