近期评论

 

2010 九月
« 八    
 12345
6789101112
13141516171819
20212223242526
27282930  

访问统计

自20090705起:
  • 当前页面共被访问3次
  • 当前有2位朋友正在访问,今天共有24位朋友来访,昨天有143位朋友,开启统计以来共有14962位朋友,其中有302(55)位订阅了此博
  • 今天站内博文共被访问141次,昨天200次,开启统计以来共计36348次
  • 此博共有文章774篇, 5个页面,评论数为869,留言人共342 个
  • 您来自美国,IP是38.107.191.85,浏览器是,操作系统是

技术支持来自 天高云淡

php和mysql下的时间、日期

热度:

为了降低StatPressCN对服务器资源的消耗,我想可以把一些数据每天归档一次,使用的时候调出来就行了,免得每次对整个数据表进行查询。可以这样处理的有昨日来访数、上月来访数、去年来访数等。设定today、thismonth、thisyear参数并赋值,然后在调用插件的时候拿当天日期和上面的参数比较,日期、月份和年份不同了就更新上面的参数值,然后再相应的更新昨日访问、上月访问和去年访问总数。逻辑上没什么问题,但实现后很偶然的情况下发现统计页面中显示的昨日数据其实是前天的数据,而柱形图中却是正确的。这个问题纠结了很久,昨天才完全搞定。主要原因在于服务器时间、访问者所在时区、php的时间函数、mysql的时间函数以及wordpress的时间函数的配合问题。

php的时间函数分两类,一种是直接显示本地(当然是服务器的本地)时间,如time、date等函数,而另外一种是显示格林威治标准时间的,不带时区的,比如gmdate函数。strtotime默认是使用time函数结果的,已经考虑的服务器所在地的时区,但没有考虑你设定的blog的时区。时间问题其实特别麻烦,牵扯到历法不同、时区等复杂因素,wordpress考虑这个问题,提供了一个current_time()函数,同时考虑了服务器所在时区以及你设定的blog的时区,来提供一个统一标准的时间,这个极大简化了时间问题的综合考虑。mysql的时间默认也是考虑时区的,同时在存储格式上和php的时间有所不同,互相调用的时候需要考虑格式的统一。

昨日数据确实显示成前天数据的原因在于strtotime(‘-1 [...]

StatPressCN,1.6.9.9版本

热度:

功能开发:

在朋友来访栏目中为朋友添加头像(gravatar),更直观;
增加了对朋友留言情况的统计显示,总留言数,最近一次留言时间和内容;
增加对朋友总访问数的统计显示;
丰富了详情中的内容,增加了直接点击发邮件给朋友的功能。

def规则:

搜索引擎数据定义:新增了对Google mobile的支持,www.google.cn/m;lai79的识别,www.lai79.com;
爬虫数据:北大学生爬虫的识别,PKU Student spider。

代码改进:

更新了部分本地化语言;
修正了对sharethis识别逻辑;
彻底解决了朋友中仍显示垃圾评论者的问题。

下载升级:

请到wordpress官方插件网址下载最新版本,ftp到服务器上去;
或者,如果您的wordpress是2.7版本以上的,那就耐心等段时间(大约几个小时吧),管理后台会自动提示升级的;
提示:升级至本版本不会影响数据库中的数据记录。

升级需做:

在StatUpdate(统计升级)中任何选项都不需要选中,执行一次升级(就是点那个升级按钮),作用是清理垃圾评论者的访问记录。

开发笔记

对于sharethis的逻辑判断经检查还是出了问题,应该分两层:先判断querystring中是否包含akst_action字样,如果有的话还要看是否包含了p=90之类的链接符号,后者说明blog没有设置永固链接,需要从querystring中提取出文章链接;如果仅包含akst字符串,则放弃querystring,转用requesturi。【换了种思路解决问题简单好多,还有效率也有很大提升,那就是先判断?后是否有p=99之类的硬链接,有的话就提取,并根据是否设定了永固链接获得permalink后存入数据库,如果没有则只取?前的部分直接存入数据库,判断提取语句如下:preg_match(“@(p=\d+|post_id=\d+|page_id=\d+)@”,$urlRequested,$matches)】

wordpress在2.7以上版本中是默认支持gravatar的,用法其实很简单,就是调用get_avatar($email)就ok了。如果要全面,可以加个判断版本低的话直接调用img src,用链接直接调用。

<span>在css中还是比较好用的,一连串的span不会像p那样自动换行。

单复数的问题用?符号最好处理:print [...]

StatPressCN,1.6.9.7版本

热度:

下载升级:

请到wordpress官方插件网址下载最新版本,ftp到服务器上去;
或者,如果您的wordpress是2.7版本以上的,那就耐心等段时间(大约几个小时吧),管理后台会自动提示升级的;
提示:升级至本版本不会影响数据库中的数据记录。

升级需做:

无。

功能开发:

侧栏小工具“最热博文”中可设定时间范围了,比如最近7天的热文、最近三个月的热文等;
在管理面板上显示统计信息;
过滤掉user [...]

StatPressCN,1.6.9.6版本

热度:

下载升级:

请到wordpress官方插件网址下载最新版本,ftp到服务器上去;
或者,如果您的wordpress是2.7版本以上的,那就耐心等段时间(大约几个小时吧),管理后台会自动提示升级的;
提示:升级至本版本不会影响数据库中的数据记录。

功能开发:

和wp-comments数据库联动,自动过滤掉垃圾留言者的访问记录;这样“朋友来访”显示的朋友访问列表就更精准了;
修正了widget中可用参数不准确的问题,主要涉及今日来访数量、昨日来访数量、今日页面访问数量、昨日页面访问数量;
“朋友来访”中显示的数量增加了50的选项卡,现在可以设定为5、10、20或50个了。

def规则:

增加了yahoo日本、cnnic的搜索引擎规则;
增加了Ginxbot、FairShare、Congentbot爬虫规则的识别。

代码改进:

在“支持”的调试信息中增加了时区和utc时间、本地时间内容显示;
在“支持”函数体中共享global [...]

关于PHP开发工具Netbeans IDE for PHP和版本管理工具svn的应用

热度:

近段一直在用Netbeans IDE early access for PHP开发StatPressCN,感觉还不错。刚好上午看到冰古在讨论PHP开发工具的问题,me觉得还是有必要给大家秀下NB for PHP。另外,顺带讲讲svn的应用。

其实me一直挺喜欢Netbeans IDE的,因为开源以及令人惊讶的运行速度,原来玩儿JAVA的时候几乎就是拿它做主力工具使用了。前段时间开发玩儿WordPress,需要弄一个PHP开发工具的时候才发现Netbeans IDE已经支持PHP开发了。直接拿来用,也没啥过度和其他考量,很顺利。为WordPress开发插件,必然涉及代码的版本管理,原来做JAVA时NB对cvs良好的支持me仍记忆犹新,看到WordPress的plugins是由svn进行管理的时候心里还在担忧为什么不用cvs呢。具体使用了才发现其实Netbeans IDE已经内置了对svn的支持。很好。

要搭建一个WordPress插件的开发环境,首先请到Netbeans的官方网站下载Netbeans IDE 6.1发布版的php预览版本并安装(提醒:不要用最新的6.5版本,svn支持有问题),然后到svn的官方网站下载客户端并安装。

然后进入NB的Options-》Miscellaneous-》Versioning-》SubVersion,设定刚才安装的svn工具的目录。

netbeans ide early access for php version options misc versioning

下面需要做的签出代码,构建开发项目。

netbeans ide early access for php svn checkout

开发项目设定好后就可以进入开发界面了,功能还是很强大的。

me蓝点标明的地方是svn相关的一些信息显示。文件改动后,在项目栏中会自动把该文件标蓝,上方的tab标签页会显示为蓝色并提示已经修改;在代码编辑窗口中,增加修改处用蓝色表示,删除了则是红色;另外贴心的是如果您在view中设定了查看diff,则在最右侧会有很多小横线:蓝色(代表增加或修改了内容)、红色(代表删除了内容)以及橙色(是警告,比如html代码标签丢失等)、灰色(说明那里定义了书签),点击可以到该位置,可以很方便的浏览代码。

在项目窗口中点鼠标右键则可以看到svn的全部相关功能菜单。可以提交代码,显示版本信息等等。

netbeans ide early access for php svn function

不过在具体使用过程中,通过NB IDE中图形化的方式进行copy to从来没有成功过。me只好在命令行中手动完成,步骤如下:

在NB IDE中完成修改后程序文件的commit;
进入checkout出来的目录,运行svn up(记得把svn所在目录加入电脑的环境变量中)把本地的代码仓库更新到最新状态;
然后svn cp trunk tags/1.6.6.9;
然后提交svn ci -m “tag 1.6.6.9″;
Done。

原来在使用tags拷贝的时候svn经常提示出错,害得me只好不停的svn [...]