Submitted by gouki on 2010, September 30, 2:51 AM
好象,大多时候,我们对于字符串的比较都是采用了 strtolower或者strtoupper之后,再判断是否相等。只是这样就需要转换两次。大多时候,我们是针对字符集转换的时候才会这样,比如判断参数传进来是否utf-8,这5个字符的写法,可就多了,比如UTF-8,Utf-8,utf-8等,那我们怎么办呢?strtolower?strupper?不需要啦。。
strncasecmp($a,$b,$length)就可以了。。
如果返回是0则相等,那我们怎么判断呢?
strncasecmp($str,'utf-8',5) == 0那么,传入的参数就是utf8的,是否很方便呢?
只是这些函数我们平时不太用得到,我看到这个函数的用法却是在 yii framework,他在处理事件的时候,判断前两个字符是否为 on 的时候,就是这样判断的。我也因此学到了一招。
PHP | 评论:0
| 阅读:15140
Submitted by gouki on 2010, September 26, 6:49 PM
昨天,把我的http://neatcn.com迁移到了VPS上(准备过两天,这个站也迁走),迁移过去后用Firefox访问白屏,一直不清楚是什么原因。
后来用IE访问,显示服务器500错误,心里就纳闷了,因为前两天我说过我迁移了ucapi.com,里面也有一个wordpress,那个是正常的,于是我怀疑是.htaccess文件的问题。然后把ucapi.com/wiki/目录下的.htaccess文件CP到了http://neatcn.com的根目录下,结果问题依旧(firefox显示白屏,但如果使用FireBug看,是可以看到显示500错误的。)
心里想着.htaccess文件可能有问题,因为ucapi.com下的.htaccess文件不是在根目录下,那文件里应该是带路径的。把路径去掉后,问题依旧。
然后,把.htaccess文件删除,可是问题仍然存在。
最后没办法,google一下,发现网上说的很多都是指.htaccess文件(还有人说是插件或者皮肤不兼容,我也尝试了删除所有插件和皮肤,结果还是不正常)。这个。。。我就没办法了,于是想到一个最喷血的办法。把wp-config.php备份,原文件删除,进行重装。
安装到最后一步,说是无法生成wp-config.php,让我把内容COPY到原来的wp-config.php文件中,OK,COPY完毕,结果继续安装的时候又显示500错误了,这个时候我就真的不知道做什么了。然后检查一下wp-config.php,突然发现,他与我原来的wp-config.php相比多了一点内容,那就是define("WP_DEBUG",false);,这个玩意看来是从3.0开始才开放的吧?我的博客是从2.x升级上去的,所以没有这个定义。
既然有debug功能,那就打开喽,定义WP_DEBUG为true,继续运行,这时候才发现原来我有一个文件不存在,报了fatal error,然后根据出错提示信息,从本地的wordpress程序中将缺少的文件COPY过去。如此做了大约三次,终于顺利的打开后台界面,兴冲冲的登录进去,选择更新系统,以防还有文件不存在的情况发生。
更新系统的时候,出现了好久不见的FTP用户密码框,这个在以前其实有介绍过Wordpress自动升级和plugin插件更新的问题,但这次我不想这么解决,于是我直接进入命令行,把我的目录的权限改成apache用户,就Over了。
最后,忙到凌晨2点多,http://neatcn.com终于可以正常访问。比较欣慰的在微勃上说了一下,结果被人鄙视说网站速度太慢。。唉,VPS嘛,将就点了。
Tags: wordpress, 500
PHP | 评论:6
| 阅读:33481
Submitted by gouki on 2010, September 19, 4:51 PM
开发中,总是会有粗心的情况出现,只是有时候这些问题还真的不容易被发现和注意。或者说,是不好的习惯导致了问题的隐藏。
在项目中使用memcache的时候,出现了:php_network_getaddresses: getaddrinfo failed,理论上,这是因为DNS解析有问题造成的,因此可以证明的是
1、dns有问题
2、hosts里没有加正确
3、配置的URL是否有问题
检查了这三个都没有问题的时候,人傻了,问题在哪里?确定从代码上看问题,最后才发现。。原来是代码上的粗心导致问题的产生。使得应该传递的host参数传递了空值(为什么memcache在遇到空值是不能自动判断为localhost呢?)不过,如果真这么判断了,估计我也永远找不到这个BUG了。
以后还是要细心啊。
Tags: memcache, php
PHP | 评论:0
| 阅读:17814
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
| 阅读:26731
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
| 阅读:66144