标签为 "Apache/Nginx" 的存档

Session与Cookie。禁用Cookie后Session会不会受影响?

  Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID 为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一 SessionID提交到服务器端,来存取Session数据。这一过程,是不用开发人员干预的。所以一旦客户端禁用Cookie,那么Session也会失效。
  服务器也可以通过URL重写的方式来传递SessionID的值,因此不是完全依赖Cookie。如果客户端Cookie禁用,则服务器可以自动通过重写URL的方式来保存Session的值,并且这个过程对程序员透明。
  可以试一下,即使不写Cookie,在使用request.getCookies();取出的Cookie数组的长度也是1,而这个Cookie的名字就是JSESSIONID,还有一个很长的二进制的字符串,是SessionID的值。
  来看一下,即使不写Cookie,通过chrome的开发者工具,也可以看到这么一组cookie的键值 {PHPSESSID : 3e23bc66d024af8b531f2adb192478af}。

Session与Cookie区别-禁用cookie会不会影响session?

Session与Cookie区别-禁用cookie会不会影响session?


Read more…

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…

linux命令:apachectl 命令详解-graceful 不中断原有连接,重新启动Apache服务器

apachectl(Apache control interface)
功能说明:可用来控制Apache HTTP服务器的程序。
apachectl is a front end to the Apache HyperText Transfer Protocol (HTTP) server. It is designed to help the administrator control the functioning of the Apache httpd daemon.

语  法:apachectl [configtest][fullstatus][graceful][help][restart][start][status][stop]
某些系统下某些参数命令可能不可用,如fullstatus、status

补充说明:apachectl是slackware内附Apache HTTP服务器的script文件,可供管理员控制服务器,但有些Linux的Apache HTTP服务器不一定有这个文件。

参  数:


  configtest   检查设置文件中的语法是否正确。用于修改了配置文件后进行测试是否有误。
  fullstatus   显示服务器完整的状态信息。
  graceful   重新启动Apache服务器,但不会中断原有的连接。用于修改了配置文件后进行重新读取配置文件。
  help   显示帮助信息。
  restart   重新启动Apache服务器。 = httpd -k restart
  start   启动Apache服务器。
  status   显示服务器摘要的状态信息。
  stop   停止Apache服务器。

Read more…

php_memcache.dll php-5.2 for windows 下载

今天安装Memcache的PHP支持时,发现网上没有Memcache for php 5.2的下载了。只有for php 5.3的。
下载地址:http://downloads.php.net/pierre/

php_memcache.dll for php5.2 for windows下载

php_memcache.dll for php5.2 for windows下载


自己在网上找了一个php_memcache.dll for php5.2 for windows,现在共享给大家:php_memcache.dll for php5.2 for windows
下载后将压缩包内的php_memcache.dll放入PHP的ext目录下,并在php.ini内添加如下一行,即可

extension=php_memcache.dll

Read more…

千万级访问量架构

1、HTML 静态化

其实大家都知道,效率最高、消耗最小的就是纯静态化的 html 页面,所以我们尽可能使我们的网站上的页面采用静态页面来实现,这个最简单 的方法其实也是最有效的方法。但是对于大量内容并且频繁更新的网站,我们无 法全部手动去挨个实现,于是出现了我们常见的信息发布系统 CMS,像我们常 访问的各个门户站点的新闻频道,甚至他们的其他频道,都是通过信息发布系统 来管理和实现的,信息发布系统可以实现最简单的信息录入自动生成静态页面, 还能具备频道管理、权限管理、自动抓取等功能,对于一个大型网站来说,拥有 一套高效、可管理的 CMS 是必不可少的。除了门户和信息发布类型的网站,对 于交互性要求很高的社区类型网站来说, 尽可能的静态化也是提高性能的必要手 段,将社区内的帖子、文章进行实时的静态化,有更新的时候再重新静态化也是 大量使用的策略,像 Mop 的大杂烩就是使用了这样的策略,网易社区等也是如 此。同时,html 静态化也是某些缓存策略使用的手段,对于系统中频繁使用数 据库查询但是内容更新很小的应用,可以考虑使用 html 静态化来实现,比如论 坛中论坛的公用设置信息, 这些信息目前的主流论坛都可以进行后台管理并且存 储再数据库中,这些信息其实大量被前台程序调用,但是更新频率很小,可以考 虑将这部分内容进行后台更新的时候进行静态化, 这样避免了大量的数据库访问 请求。

Read more…

Ubuntu php apache mysql 环境配置 apt-get

安装 Apache2:

sudo apt-get install apache2

安装PHP模块:

sudo apt-get install php5

编辑测试页:
sudo vim/var/www/index.php

如果提示还没有安装vim,可以用以下bash安装

sudo apt-get install vim

Read more…

Apache如何解决Parent: child process exited with status 3221225477 — Restarting.

Apache错误日志:

[Tue Sep 06 11:52:43 2011] [notice] Parent: child process exited with status 3221225477 -- Restarting.

当发生错误3221225477时,解决办法是:

复制php5目录下的php5apache2_2.dll和libmysql.dll两个dll文件到c盘的windows/system32目录下,然后重启Apache server.注意php5apache2_2.dll文件的选择,是根据Apache版本来的,如果你的Apache采用的是旧版本,请尝试对应的DLL文件php5apache2.dll或者php5apache.dll

Read more…

apache 的 5分钟

用snoopy制作一个采集程序,这个程序逻辑上需要由业务人员来手动开启采集,所以只能制作成web页面的,但是在采集过程中,却遇到了一个问题:

由于采集的数据量很大, 需要Apache很长时间去响应,当超过5分钟的时候,会发生超时,即使程序中设置set_time_limit()也没有效果。当超时后,web页面会显示服务器错误,但是通过后台监控,发现抓取程序其实还在运行,并且运行第二次,这样就会导致这个程序运行了两遍。又检查了Apache日志,发现每次请求超时(5分钟)后,Apache会很快再次发起一个请求,导致了程序的二次运行。

Read more…

在Apache服务器内部通信

问题:

想要实现PHP与Apache请求进程的其它部分之间的通信。其中包括在access_log中设置变量。

方案:

使用apache_note()。

Read more…