IIS统计流量的方法
作者:admin 日期:2011-08-08
这种方法不是我发明的,却是我发现的!我自己也曾苦于没有这种软件。但是我一直相信,一定有这种软件的,因为很多虚拟主机服务商都有限制流量,例如:10G/月。而限制流量的前提是要可以统计出流量啊,所以这种虚拟主机的服务器上面肯定是装了这种软件的。只不过我一直都没有找出来。
直到最近一次日站的时候,才有所发现。
我发现他们的服务器上(当然不只一台服务器)的iis都加了几个isapi过滤器。除了一般的urlrewrite模块,还有其他两个不知名的模块...说是不知名不是因为我不知道,而是我问百度他也不知道。
出于好奇,我把这两个模块下回了本地,经过一些调试,终于有所发现。其中有一个模块,就是用来统计流量的。如果流量超过了预先设定的值,就直接关闭站点。
下面说说具体的做法吧!
ISAPI Filter的具体写法其实也简单的,导出 GetFilterVersion,HttpFilterProc这两个函数就可以了。这里不多说了。不懂的自己找百度一下吧。
那么在GetFilterVersion函数里面设置SF_NOTIFY_SEND_RAW_DATA
在HttpFilterProc函数里面对这个事件进行处理.
case SF_NOTIFY_SEND_RAW_DATA:
OnSendRawData(pfc,(PHTTP_FILTER_RAW_DATA)pvNotification);
break;
那么在处理函数里面OnSendRawData
DWORD x = pResponse->cbInData; //发送字节数
x就是这次发送的字节数。一次请求不一定只发送一次,但这不影响我们统计,我们只需要把这个值保存在文件中,或者注册表内,每月清空一次,就可以实现对一个网站流量的限制。