分类 "Php" 的存档.

apache日志分析处理;如何通过apache日志计算出PV数和UV数?

google了下,没有找到如何通过apache日志计算出PV数和UV数,在知乎上提问了个,等待高人解答吧。
—–
等了一下午,知乎上也木有人能给出合理的算法,chinaunix上也木有,stackoverflow.com上也木有,自己找时间看一下awstats吧,看看能不能找到答案。
—-
来公布答案了~~
查询了awstats的文档说明,http://awstats.sourceforge.net/docs/awstats_glossary.html 这里

Glossary

Unique Visitor:
A unique visitor is a person or computer (host) that has made at least 1 hit on 1 page of your web site during the current period shown by the report. If this user makes several visits during this period, it is counted only once. Visitors are tracked by IP address, so if multiple users are accessing your site from the same IP (such as a home or office network), they will be counted as a single unique visitor.
The period shown by AWStats reports is by default the current month.
However if you use AWStats as a CGI you can click on the “year” link to have a report for all the year. In such a report, period is a full year, so Unique Visitors are number of hosts that have made at least 1 hit on 1 page of your web site during the year.

awstats中, unique visitor 是根据IP来计算的,所以awstats中统计的UV值,即是IP值。
webtrends中, 也有对UV的统计,不过webtrends也是有JS统计代码的,所以,它的统计原理跟大部分统计代码都一样,通过JS获取客户端的cookie来计算UV值。
附一段webtrends的统计代码,为了避嫌,把敏感信息改掉了,大家看看就行了:


<!-- START OF SmartSource Data Collector TAG -->

<!-- Copyright (c) 1996-2006 WebTrends Inc.  All rights reserved. -->

<!-- V8.0 -->

<!-- $DateTime: 2006/06/27 11:16:10 $ -->

<SCRIPT TYPE="text/javascript"><!--

var gDomain="w.domain.com.cn";	// SDC Production Mode Domain

var gDcsId="dcsoujabcdefghv3n65j4j3j2j2j_test";



var gFpc="WT_FPC";

var gConvert=true;



var gJsWtid;



function dcsSyncGetWtid() {

	document.write("<SCR"+"IPT TYPE='text/javascript' SRC='"+"http"+(window.location.protocol.indexOf('https:')==0?'s':'')+"://"+gDomain+"/"+gDcsId+"/wtid.js"+"'></SCR"+"IPT>");

}

function dcsAsyncGetWtid() {

	gJsWtid=document.createElement("script");

	var jsWtidUrl="http"+(window.location.protocol.indexOf('https:')==0?'s':'')+"://"+gDomain+"/"+gDcsId+"/wtid.js";

	window.setTimeout('gJsWtid.src="' + jsWtidUrl + '"',0);

	var headElem=document.getElementsByTagName("head")[0];

	headElem.appendChild(gJsWtid);

}



if ((typeof(gConvert)!="undefined")&&gConvert&&(document.cookie.indexOf(gFpc+"=")==-1)&&(document.cookie.indexOf("WTLOPTOUT=")==-1)){

//	dcsSyncGetWtid();

	dcsAsyncGetWtid();

}



//-->

</SCRIPT>



<SCRIPT SRC="/inc/js/dcs_tag.js" TYPE="text/javascript"></SCRIPT>



<NOSCRIPT>

<IMG ALT="" BORDER="0" NAME="DCSIMG" WIDTH="1" HEIGHT="1" SRC="http://w.domain.com.cn/dcsoujabcdefghv3n65j4j3j2j2j_test/njs.gif?dcsuri=/nojavascript&WT.js=No&WT.tv=8.0.0">

</NOSCRIPT>

<!-- END OF SmartSource Data Collector TAG -->

查看并询问了一些关于Google Analytics计算UV数的算法,记录如下(感谢 yeshu http://www.wainsight.com):
Google Analytics对于独立访客(UV)的计算,是基于访客浏览器中cookie来确定的,当访客第一次(或cookie丢失后)访问添加GATC的代码时,便会创建一个唯一的cookie(即一个UV),cookie中utma变量记录了访客ID、访问次数、访问时间等信息,UV数以此累加。当访客丢失cookie或更换浏览器重新访问网站,都将会被认为新访客,而创建一个cookie,记录为一个新的UV。
.
以下内容也是一些关于apache日志分析的东东,记录下来。

1.什么是UV?
UV是unique visitor的简写,是指独立访客,是以实际访问的电脑计数。
2.什么是IP?
IP是国际互联网协议(Internet Protocol)的简称,是通过网络间信息地址定位具体计算机的方式之一。
3.UV和IP的概念有什么区别?
对于IP来说,它在同一级别的网络(例如某个局域网、社区网、教学楼网或者INTERNET)范围内是唯一的,同一局域网内的所有电脑都只有一个共同ip。
举例来说,我在一个局域网里,对外的IP是219.129.170.111,那么跟我同一局域网里的所有电脑都是这个IP,也就是说假如整个局域网的电脑都访问您的网站的话,在24小时内也只计算一个IP,所以相对UV来说不是很精确。
而UV跟IP稍有不同,UV是访问你的网站的每一台电脑客户端。现在很多朋友用的网络都是局域网,引入了UV后,就能更精确的统计。
总结:
UV的统计数比IP更为准确,能够准确的计数每一台访问电脑,而IP把同一局域内的所有电脑视为一个。
(PS:UV计数会涉及COOKIE。)
 
Read more…

流量统计方法分类 – web server log 和 page tagging

一、什么是web server log 和 page tagging

web server log:使用软件将原始数据解析为有用的数据。主要的工具有awstats、webtrends(收费)。

以下为具体的服务器日志:

202.80.215.14 - - [10/Mar/2012:01:29:59 -0700] "GET www.domain.com/index.php HTTP/1.1" 200 99314 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1045 Safari/532.5"

web server log主要可统计到的数据为:

Apache日志包含的各字段内容及其含义

Apache日志包含的各字段内容及其含义

Read more…

Google Analytics数据统计的原理,如何计算PV,UV,IP

Google Analytics功能非常强大,只要在网站的页面上加入一段代码,就可以提供的丰富详尽的图表式报告。Google Analytics的数据采集功能是采用AJAX技术来实现,整体架构如图所示:

Google Analytics的数据采集整体功能架构

Google Analytics的数据采集整体功能架构

我们都知道在使用Google Analytics需要在网站上加上跟踪代码(Google Analytics Tracking Code,简称GATC) ,下面我们就来研究下跟踪代码是如何进行工作的。
谷歌分析跟踪代码(GATC) 检索网页数据如下:
浏览器请求的网页包含跟踪代码。
GATC创建并初始化一个对象的属性与网络相关的跟踪ID在代码中。
GATC执行你自定义任何跟踪方法。
跟踪代码初始化和管理以下信息:跟踪检索查看是否包括广告系列;收集HTTP请求中的各种用户信息的到Google GATC。
将访问者HTTP请求包含GATC跟踪信息收集到参数名单。

Read more…

PHP parse_url() URL 解析函数 / pathinfo() 函数

parse_url() 函数可以解析 URL,返回其组成部分。它的用法如下:

array parse_url ( string url )

此函数返回一个关联数组,包含现有 URL 的各种组成部分。如果缺少了其中的某一个,则不会为这个组成部分创建数组项。组成部分为:

  • scheme – 如 http
  • host
  • port
  • user
  • pass
  • path
  • query – 在问号 ? 之后
  • fragment – 在散列符号 # 之后

此函数并不意味着给定的 URL 是合法的,它只是将上方列表中的各部分分开。parse_url() 可接受不完整的 URL,并尽量将其解析正确。此函数对相对路径的 URL 不起作用。

<?php
	$url = "http://www.digdeeply.org/wp-admin/";
	$parts = parse_url($url);
	
	print_r($parts);
?>

程序运行结果如下:
Array ( [scheme] => http [host] => www.digdeeply.org[path] => /wp-admin/ )
Read more…

零宽断言,负向零宽断言

零宽断言是正则表达式中的一种方法

正则表达式在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。

Read more…

ThinkPHP开启Gzip压缩,减少带宽消耗

不知道是我了解的少,还是ThinkPHP本来就不支持gzip压缩,每次流量都消耗的太大了,尤其是在 SAE上托管的这种程序来说,那一分一秒,跑得都是人民币啊。。
ThinkPHP下开启Gzip压缩很简单,不管你是哪个版本,只要在你的入口文件index.php中加入以下两行,如果你的服务器支持,那么就OK了。

define ( "GZIP_ENABLE", function_exists ( 'ob_gzhandler' ) );
ob_start ( GZIP_ENABLE ? 'ob_gzhandler' : null );

 

ThinkPHP中开启Gzip压缩 节省流量74.97%

ThinkPHP中开启Gzip压缩 节省流量74.97%

Read more…

SAE内网SAE Error: RESET Error;

由于微博API要求从2011年12月26日起,所有请求必须加入请求者的IP。由于从内网发起请求,最后header中获得的IP为10打头的内网IP,导致认证失败。
修改sae的SaeTClientV2类的http()方法中检测下,如果IP是10打头的内网IP,强制转换header中的saeremoteip为一个外网IP。

		$remote_addr = $_SERVER['REMOTE_ADDR'];
		if (substr($remote_addr,0,3) === '10.') {
			$remote_addr = '61.135.152.203';
			$headers[] = "SaeRemoteIP: " . $remote_addr;
		}

Read more…

windows下php_curl获取https内容

在搞一个新浪微博小应用,在本地搞的开发环境,win7 旗舰版 64位。
当使用php_curl curl_init() curl_exec()时候,发现当访问接口文件 https://api.weibo.com/oauth2/access_token 要进行登陆认证时,返回结果为false,没有抓取到内容。但是访问http的内容时是正常的,但是openssl也是打开的啊,应该是可以的。
找了半天问题,后来仔细想了一下,认为可能是打开ssl内容时的证书验证问题,于是, 在curl里加入了如下参数,取消证书检验:

        $ch = curl_init();

        curl_setopt($ch,CURLOPT_TIMEOUT,$second);

        curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);

        curl_setopt($ch,CURLOPT_URL,$url);
       
         //取消证书检验
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        
        curl_setopt($ch,CURLOPT_POST, 1);

        curl_setopt($ch,CURLOPT_POSTFIELDS,$vars);
        
        $data = curl_exec($ch);

        curl_close($ch);

Read more…

明星软件工程师的10种特质

如今,每家公司都似乎成了科技公司。从软件创业公司到投机性投资公司、制药巨头和媒体巨头,它们都越来越多地加入到软件业务行列。
代码质量不仅成为了一个必需品,更成为了一个竞争优势。因为众多公司围绕软件而竞争,开发软件的人——软件工程师正显得越发重要。但是,你该如何发现那种百里挑一的程序员呢?在本文中,我们简明扼要地列出了明星开发人员的10种特质。

  • 1. 热爱编程
  • 2. 完成事情
  • 3. 持续重构代码
  • 4. 使用设计模式
  • 5. 编写测试
  • 6. 善用现有代码
  • 7. 专注可用性
  • 8. 编写可维护的代码
  • 9. 能用任何语言编程
  • 10. 知晓基本的计算机科学

Read more…

修改配置文件实现 Zend Studio5.5汉化,不满意可以回退

直接修改配置文件desktop_options.xml文件就OK了。(文件位置:如我的win7下是:C:UsersrootZDEconfig_5.5)的目录下。

ZendStudio-5.5.0a 原版官方下载 for Windows
ZendStudio-5.5.0a 原版官方下载 for Linux
ZendStudio-5.5.0a 原版官方下载 for Mac_OS_X 
ZendStudio-5.5.0a-KeyMaker for Win32 only

zend studio 5.5 汉化 - 通过修改配置文件

zend studio 5.5 汉化 - 通过修改配置文件

Read more…