手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表分类:PHP

PHP开源Apache日志分析工具收集与比较

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 AgentWinSysLogEventReport。在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代码
  1. 使用关系型数据库作为后端数据存储,实时生成报表。而 Webalizer 则是生成 html 文件。基于DBMS数据库的方式能够随时提供不同形式的数据,但是日志文件的解析速度上不如 Webalizer。  
  2. Webalizer只保存最近12个月的数据,之前的数据则无法再查看。  
  3. Webalizer的报告结果是硬编码的,而Logminer则是每个报告对应一个PHP类,我们可以灵活的进行定义。  
  4. LogMiner提供了比Webalizer更多的报表,比如操作系统和访问路径。  

5、Webalizer

Webalizer虽然不是PHP的,但是上面LogMiner总是拿这个作比较,就顺便说一下。用C写成,日志分析能力非常出众,采用HTML的报表展示形式,是一个非常流行的日志分析工具。

6、TraceWatch

一个PHP+Mysql的日志分析工具,界面不太喜欢,好像就是路径分析比较有特点,其他的感觉还有点慢,就没什么了。

 

其他还有一些不太知名的工具,就没有一一细看:

AudiStatSlimStatPiwik

结合看到的这些工具,针对我们单位的实际需求,感觉 Awstat + JAWStats 组合更为好一点。因为日志会收集到单独的日志服务器上,所以性能上的消耗也就不会在意了。接下来看看实际的效果吧。

PS:刚才看AWS的文档,看到一个对比,可能对于特性的了解能够更加的一目了然。

 

大小: 937.15 K
尺寸: 139 x 376
浏览: 2417 次
点击打开新窗口浏览全图

参考资料:

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吧。毕竟这个很多人习惯了

图片附件(缩略图):
大小: 70.38 K
尺寸: 500 x 232
浏览: 2096 次
点击打开新窗口浏览全图

Tags: apache, log, awstat

表单提交时submit按钮的值没有被提交

今天在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

simplexml xpath

SimpleXmlElement 在我们用的时候好象很多都是直接使用simplexml_load_string或者load_file。但事实上,SimpleXmlElement功能很强大,只是我们很多时候都忽略了?大多数人还在使用xml_create等函数?

SimpleXmlElement中最让人用的舒服的恐怕就是这个xpath了。例如这个官方的例子:

PHP代码
  1. <?php  
  2. $string = <<<XML  
  3. <a>  
  4.  <b>  
  5.   <c>text</c>  
  6.   <c>stuff</c>  
  7.  </b>  
  8.  <d>  
  9.   <c>code</c>  
  10.  </d>  
  11. </a>  
  12. XML;  
  13.   
  14. $xml = new SimpleXMLElement($string);  
  15.   
  16. /* Search for <a><b><c> */  
  17. $result = $xml->xpath('/a/b/c');  
  18.   
  19. while(list( , $node) = each($result)) {  
  20.     echo '/a/b/c: ',$node,"\n";  
  21. }  
  22.   
  23. /* Relative paths also work... */  
  24. $result = $xml->xpath('b/c');  
  25.   
  26. while(list( , $node) = each($result)) {  
  27.     echo 'b/c: ',$node,"\n";  
  28. }  
  29. ?>  
这个例子输出是:
XML/HTML代码
  1. /a/b/c: text  
  2. /a/b/c: stuff  
  3. b/c: text  
  4. b/c: stuff  

看看,是不是很方便?对于某个XML很大的情况就比较值得这样使用了。

Tags: simplexml, xpath

Editplus 自动检查语法

用惯了IDE写PHP,再次回到Editplus的时候总有点不太习惯,比如没有函数提示了(当然也可以自己打造)。不过。。语法检查总还是需要的,总不能自己程序传到服务器上后运行了才知道语法有问题吧?于是利用Editplus的小功能aftersave。改造了一下。

进入editplus的选项设置,点击左侧的User tools菜单,在右侧的Group and Tools下拉框中选择 AutoSave:after save。

大小: 49.06 K
尺寸: 469 x 376
浏览: 1877 次
点击打开新窗口浏览全图

在右侧的 add tool里选择 program。然后输入:标题,程序所在位置,以及参数。。

php语法检测是php.exe -l filename,这个可以通过命令行下运行 php -? 了解。然后要catch output,以及针对current file。。

OK,这样就over了。

看看效果?

大小: 39.2 K
尺寸: 463 x 243
浏览: 1742 次
点击打开新窗口浏览全图

Tags: editplus, php, syntax

Discuz Uchome 小技巧

discuz的ajaxpost功能有点强大,但缺点也很明显,如果ajaxpost提交一个FORM,那么返回的时候只能显示showmessage的内容,而不会主动跳转,因此这里就有一个小技巧 了。。

比如默认submit按钮这样操作:onclick="ajaxpost('formid')";之类的,我们可以先这样。。
onclick="$('__formid').innerText='';ajaxpost('formid');checkPostResult();";
含义其实很简单,先把ajaxpost提示信息所在的div内容清空。然后提交。最后,根据返回值来判断。。

JavaScript代码
  1. function checkPostResult(){  
  2.     var cid = setInterval(function(){  
  3.         if( $('__formid').innerText == 'success'){  
  4.                 alert('提交成功');  
  5.                 location.href='xxxxx.php';  
  6.                 clearInterval(cid);  
  7.         }  
  8.     },1000);  
  9. }  

这个处理也很简单,为什么是用setInterval和clearInterval,主要是由于ajax是异步操作,如果不用setInterval方法 ,那么在ajaxpost结束的时候,其实提示信息还没有append到提示信息所在的ID里,所以用setInterval方法先延迟然后循环处理最后再结束提示。。。

clearInterval用的不太对,但短时间内想不到更好的。先这样临时解决喽。

Tags: discuz, uchome, tips