Submitted by gouki on 2010, September 11, 11:11 PM
apache的日志是有专门分析工具的,但是用PHP的就比较少了。或者说我关注的比较少吧,看到这个就记录一下了。可以用于在线分析(但事实上,我想性能应该不会高到哪里,想来perl版的还是效率高很多)
上原文吧:
我们知道已经有很多像Awtstat这样的使用perl、c或者c++开发的强大的日志分析工具,但是同样也有很多使用PHP开发并且开源的日志分析软件,今天我就收集了一些与大家分享。
1、LogAnalyzer
LogAnalyzer是 Adiscon的监控软件产品线中的一部分。可以再Windows以及Unix环境下运行。LogAnalyzer本是是免费的,GPL许可的产品。
LogAnalyzer的原名为phpLogCon,他在2010年的3月29日发布了3.0的稳定版,并且正式改名为LogAnalyzer。
程序运行必须有他们制定的数据支持,在Windows环境下, 可以使用MonitorWare Agent、WinSysLog、EventReport。在Linux环境下可以使用rsyslog。现在Yum的源中包含了rsyslog这款软件,源中的版本是3.22.1,官方的最高版本是4.6.4的稳定版以及6.1.0的开发版。
由于不能使用原生的数据进行分析,我觉得算是他的一个缺点。
2、Jawstats
这是一款基于Awstat的PHP开源程序,提供了非常漂亮的分析统计结果的展示界面,支持中文。他的作者是 Jon Come。
JAWStats可以减轻AWStats的计算压力,同时安装非常简单,只要稍微修改一下配置文件就可以运行。配置项也可以非常简单。
JAWStats的使用界面也非常人性化,因为作者原来是一个UI工程师。在系统中,我们可以非常容易的在不同月份之间切换,还可以在不同站点的日志之间进行切换。也可以通过Web界面来进行分析数据的更新,正好切合我们的需求,只在需要看的时候出报表就好了。
JAWStats支持主题,可以进行主题的设计和切换。
总的来说,看完了JAWStats的介绍,觉得是比较推荐的一款产品。
3、Web Analytics. Open Source
一款GPL协议下的开源软件,界面和数据获取方式都是模仿GA的,对于小型站点的分析应该不错。有对于Wordpress和Mediawiki的统计支持。
4、Log Miner
LogMiner 是一个分析Apache或者IIS日志,或者其他支持 combined 或者 W3C扩展日志格式的服务器。能够提取并展示包括访问量、点击、流量、请求数、访问路径、浏览器和操作系统在内的诸多指标。数据存储采用的是 PostgreSQL,存储比较精简。
Log Miner开发的灵感源自于流行的 Webalizer ,但是有一些主要的不同:
XML/HTML代码
- 使用关系型数据库作为后端数据存储,实时生成报表。而 Webalizer 则是生成 html 文件。基于DBMS数据库的方式能够随时提供不同形式的数据,但是日志文件的解析速度上不如 Webalizer。
- Webalizer只保存最近12个月的数据,之前的数据则无法再查看。
- Webalizer的报告结果是硬编码的,而Logminer则是每个报告对应一个PHP类,我们可以灵活的进行定义。
- LogMiner提供了比Webalizer更多的报表,比如操作系统和访问路径。
5、Webalizer
Webalizer虽然不是PHP的,但是上面LogMiner总是拿这个作比较,就顺便说一下。用C写成,日志分析能力非常出众,采用HTML的报表展示形式,是一个非常流行的日志分析工具。
6、TraceWatch
一个PHP+Mysql的日志分析工具,界面不太喜欢,好像就是路径分析比较有特点,其他的感觉还有点慢,就没什么了。
其他还有一些不太知名的工具,就没有一一细看:
AudiStat、SlimStat、Piwik
结合看到的这些工具,针对我们单位的实际需求,感觉 Awstat + JAWStats 组合更为好一点。因为日志会收集到单独的日志服务器上,所以性能上的消耗也就不会在意了。接下来看看实际的效果吧。
PS:刚才看AWS的文档,看到一个对比,可能对于特性的了解能够更加的一目了然。
参考资料:
1、CrunchTools
2、LogAnalyzer
3、Jawstats
4、Awstat
5、Web Analytics . Open Source
6、Log Miner
7、Webalizer
8、TraceWatch
原文来自:http://www.cnblogs.com/cocowool/archive/2010/09/07/1820626.html
收藏了这么多,确实。。。。。。好象很多人用到现在都还是Awstat吧。毕竟这个很多人习惯了
图片附件(缩略图):
Tags: apache, log, awstat
PHP | 评论:0
| 阅读:26162
Submitted by gouki on 2010, September 10, 1:59 PM
今天在RPC里面,阿刁提出个问题,FORM表单中,submit提交的时候,有时候有值,有时候无值 ,想问清楚是什么原因
状态描述:
1、FORM表单中,submit的name是Submit。即 <input type="submit" name="Submit" value="提交表单" />
2、当点击submit按钮时,FORM被提交,提交后获取的数组中有Submit下标的值
3、回到FORM表单,直接敲回车提交,这时候发现获取的数组中没有Submit下标。
纠结的是:为什么会有两种情况的不同
查找原因,最后基本确认,这是由于form在不同情况下,可以直接使用回车进行提交表单而导致的问题。这里有几篇参考文章:不同浏览器对回车提交表单的处理办法和表单提交按钮input和button的取舍。那么,为什么敲回车和点击submit不一样呢?怎么样才能让他们一样?
尝试将focus移到submit按钮上。敲回车提交。这时候,是带有Submit值的。如果focus不在submit按钮上,则无效。知道了问题的原因,那就有解决方法了。对于submit,不要设name值 。如果确实需要传递值 ,请使用hidden域进行值的提交。以防止数据产生偏差。
Tags: submit, html, form
PHP | 评论:5
| 阅读:65610
Submitted by gouki on 2010, September 9, 9:12 PM
新入职时,对于公司的业务不熟悉,这时候,你在干什么?看所谓的数据字典?熟悉老的程序?一行行的看代码?还是先熟悉一些程序员应该了解的后台操作?
虽然好象都应该这么做,但是在测试机上,你尝试性的做了一步操作,怎么查看他的结果?有多少数据表进行关联?除了看程序,还有没有其他办法 ?
下面就是一淘宝QA的技巧,值得推广。事实上,我是通过看程序了解的(看其中所涉及的SQL,但事实上,如果业务封装的很好,为了看这些所谓的SQL,可能需要查看很多程序文件,当然也可以通过debug模式,将这些受影响的SQL打印出来,这其实是最佳的。)
那么淘宝QA是怎么做的呢?他们不可能修改程序,否则就成了程序员而不是QA了。请看:
淘宝是一家业务驱动型的公司,想必每位小二都曾跟我一样,进来淘宝后,熟悉些基本的测试工具以后,就开始一头扎入茫茫的业务学习中去了。。。
每条线的业务都是错综复杂的,如何在千丝万缕中找到切入点,或许很多人曾经跟我一样迷茫,来吧,新人们可以踩着我的尸体上去了。好吧,为了纪念一下考级时候所用的英语模板,重新拿出来蹂躏一下,以作发泄。。。
当你做一个业务动作的时候,或许你最想知道的是,你的这个动作到底影响了哪几张表?OK,你有2个方法可以去寻找答案:问你的师兄师姐,看他们的沉淀、 tc,or自己去看数据库。这里,向后面的人推荐一下我个人比较笨拙的查数据库的方法,此方法只适用于清晨幽静无人之时:
一般,我会在清晨8点前来到公司,然后开始偷偷摸摸的干起来。
Firstly,把你所在线的表名都给导出来(找到数据库,在Tables下会显示这个库中的所有表,系统的表可以不用复制出来),如果是分表的话,看是 否是根据日期,user_id或是什么别的来分的,只要根据你操作的日期或者你的user_id等等来选择一张就行了;然后制作.sql的文件,内容如 下:
set heading off
set feedback off
spool d:\sb.sql(你的sql路径)
select count(*), ‘表名(刚才复制出来的)’ from 表名(刚才复制出来的) ;
(有多少表就写多少表,这个sql其实就是统计这个表现在有多少条记录)
spool off
set heading on
set feedback on
制作完成后,打开command window,输入刚才制作的.sql文件的路径:
我是保存在d盘下的
点击回车,就开始运行了,将你现在表中的记录数都打出来,
Started spooling to d:\sb.sql
14 xx_xxx_xxx ;
1 xx_xxx_xxx;
108 xx_xxx_xxx ;
Stopped spooling to d:\bss.sql
可以做一下ctrl+c,然后在ctrl+v,将这个东东保存在一个1.txt的文件中。
Secondly,开始你的业务操作,动作完成以后,再次输入.sql文件的路径,点回车,将新的记录数保存在另一个2.txt文件中。
Last but not least,你还需要一个工具来比较这2个文件,我用的是Beyond Compare,效果如下:
点击确定
你按照上面变红的数据表,对应数据字典去逐个看一下数据库中这些发生变化的表,你就明白你的这个操作为什么带来了这几张表的变化了。
欧拉。。。。。
原文来自:http://qa.taobao.com/?p=8804
Tags: 淘宝, 业务
DataBase | 评论:0
| 阅读:18683
Submitted by gouki on 2010, September 9, 3:35 PM
在页面处理的时候,有时候我们会使用这样的小技巧,在没有点击XX按钮时,YY按钮是disabled的,当选中了XX时,YY也变成了enabled的状态。
在使用普通的JS的时候,我们很可能就直接document.getElementById('YY').disabled = false;就解决了。但是在jQuery里却不是每个浏览器都支持这样的作法,即:$('#yy').attr('disabled',false);也试了一下$('#yy').attr('disabled','');,不知道是我的人品问题还是确实 有问题,反正都没有成功,于是我又尝试$('#yy').attr('enabled','enabled'),也没有成功。 最后一发狠,来了一句:$('#yy').removeAttr('disabled'),得成了。
果然还是怕狠人的。在这里做个记录而已。虽然大多数情况下不一定用得到。
Tags: jquery, inpu, disabled, enabled
Javascript | 评论:0
| 阅读:20210
Submitted by gouki on 2010, September 8, 9:07 PM
SimpleXmlElement 在我们用的时候好象很多都是直接使用simplexml_load_string或者load_file。但事实上,SimpleXmlElement功能很强大,只是我们很多时候都忽略了?大多数人还在使用xml_create等函数?
SimpleXmlElement中最让人用的舒服的恐怕就是这个xpath了。例如这个官方的例子:
PHP代码
- <?php
- $string = <<<XML
- <a>
- <b>
- <c>text</c>
- <c>stuff</c>
- </b>
- <d>
- <c>code</c>
- </d>
- </a>
- XML;
-
- $xml = new SimpleXMLElement($string);
-
-
- $result = $xml->xpath('/a/b/c');
-
- while(list( , $node) = each($result)) {
- echo '/a/b/c: ',$node,"\n";
- }
-
-
- $result = $xml->xpath('b/c');
-
- while(list( , $node) = each($result)) {
- echo 'b/c: ',$node,"\n";
- }
- ?>
这个例子输出是:
XML/HTML代码
- /a/b/c: text
- /a/b/c: stuff
- b/c: text
- b/c: stuff
看看,是不是很方便?对于某个XML很大的情况就比较值得这样使用了。
Tags: simplexml, xpath
PHP | 评论:0
| 阅读:17089