热度:
为了降低StatPressCN对服务器资源的消耗,我想可以把一些数据每天归档一次,使用的时候调出来就行了,免得每次对整个数据表进行查询。可以这样处理的有昨日来访数、上月来访数、去年来访数等。设定today、thismonth、thisyear参数并赋值,然后在调用插件的时候拿当天日期和上面的参数比较,日期、月份和年份不同了就更新上面的参数值,然后再相应的更新昨日访问、上月访问和去年访问总数。逻辑上没什么问题,但实现后很偶然的情况下发现统计页面中显示的昨日数据其实是前天的数据,而柱形图中却是正确的。这个问题纠结了很久,昨天才完全搞定。主要原因在于服务器时间、访问者所在时区、php的时间函数、mysql的时间函数以及wordpress的时间函数的配合问题。
php的时间函数分两类,一种是直接显示本地(当然是服务器的本地)时间,如time、date等函数,而另外一种是显示格林威治标准时间的,不带时区的,比如gmdate函数。strtotime默认是使用time函数结果的,已经考虑的服务器所在地的时区,但没有考虑你设定的blog的时区。时间问题其实特别麻烦,牵扯到历法不同、时区等复杂因素,wordpress考虑这个问题,提供了一个current_time()函数,同时考虑了服务器所在时区以及你设定的blog的时区,来提供一个统一标准的时间,这个极大简化了时间问题的综合考虑。mysql的时间默认也是考虑时区的,同时在存储格式上和php的时间有所不同,互相调用的时候需要考虑格式的统一。
昨日数据确实显示成前天数据的原因在于strtotime(‘-1 [...]
热度:
上月初笔记本的硬盘噼里啪啦的乱了,貌似是硬件问题,听着里面咯吱咯吱的叫,感觉心惊肉跳的。换了同型号的硬盘重装系统,幸亏有网络和移动硬盘备份重要文件,让工作可以继续,但手机程序、照片以及自己业余开发程序的环境就不复存在了。近段忙的不行,前天终于有时间有心情把这一切恢复起来。把相关步骤做个记录,聊以备忘。以后如果硬盘再坏了,照这个重新来一道就可以了(希望不会再次发生)。
整体的部署如下:
安装netbeans for php的集成开发环境;
在本机架构apache服务器和mysql服务器环境;
从http://heart5.com 的服务器空间把整站down下来,然后把mysql数据库压缩备份下来;
在本机架构wordpress博客站点并把down下来的网站数据和数据库数据恢复并做相应修改,注入;
在netbeans中新建project,源码就是本地服务器安装的wordpress程序代码;
安装svn工具,checkout出来wordpress.org插件目录中的源码,设定到netbeans开发环境中;
okay。
一、netbeans已经是6.9版本了,php专用版只有35M,安装之,和以前版本的差别不是很大,release中说是多了对某些服务的支持,使用过程中再慢慢体验吧。netbeans本来是java开发平台,原来使用体验不错,就沿用了for php的专用版本,也不期待对php的支持能好到哪里去,能用就好。
二、在本地架构主机和数据库服务自然使用xampp套件,到主网站看了下,已经升级到1.7.3版本了。下了个lite版本,zip压缩,有60.9M大,支持apache和mysql够了。解开使用前,需要运行setup_xampp.bat进行系统设定,基本一路y就可以了。平常使用的话就运行xampp-control.exe,手动启动apache和mysql服务就可以了。可以在浏览器中键入http://localhost/xampp 进行测试,安装并设定成功的话浏览器会显示xampp的欢迎信息。
三、考虑到博客上曾经上传了图片存放,再加上一些其他个人文件,因此找胡戈戈回复了ftp密码后对全站进行下载,结果花了我五个小时时间,大呼上当。究其原因,首先是原来设定的每周数据库备份占了100多M,其次是wordpress的目录太深,ftp时非常好时间。其实正确的方案是在本机重新安装wordpress3.0版本就可,至于个性化的图片和文件顶多半个小时就恢复完了。进入cpanel对数据库进行了备份下载。后来发现的诡异事件是自从我用cpanel对数据库进行了操作后,网站居然不可访问了,提示error establishing database connection,后来Google之,根据别人经验对config文件进行了相应修改才恢复正常。难道原来的配置文件是错误的,那为什么原来可以正常访问呢?猜测可能是服务器端缓存的原因。
四、wordpress程序文件和个人个性化文件很好搞,直接拷贝到xampp下的htdocs目录下就行了。有点技术含量的是对本机的mysql进行相应的设定。登录http://localhost/xampp ,进入phpadmin图形化数据库管理界面,构建一个数据库用于存储博客数据,然后再用mysql命令行工具新增一个用户并赋予它访问新构建数据库的权限。方便起见,建议无论是数据库名称还是用户名称和密码都和外购服务器空间上的保持一致,避免更改config文件。同样是在phpadmin图形化数据库管理界面中选择新建的数据库,把从外购服务器备份下来的数据库文件导入,然后修改option子表的home和siteurl的值为http://localhost 。一切okay了,你可以在浏览器中登录http://localhost 访问,应该会正常显示博客页面,和外购服务器上的一模一样。注,为避免混淆,建议在管理后台修改博客中文名称,加上“本地”二字,避免调试中可能产生的混淆。
五、启动netbeans,新建项目,命名为wordpress,设定服务器地址为localhost,并选中源码改动时自动拷贝至服务器,源码目录一般在我的文档下的netbeansproject下。从xampp的htdocs目录下把文件全部拷贝过来。以后启动netbeans进行程序开发就行了,所做调整都会自动反应在本地服务器上,可以通过浏览器访问localhost查看效果。
六、原来用的是官方的svn命令行工具,这次尝新,安装了图形化界面的tortoisesvn使用。进入netbeansproject下的wordpress的statpresscn插件目录下,把内容全部删除,退回上一级目录,用鼠标选中statpresscn目录,右键弹出菜单中选择checkout,在弹出的窗口中输入http://svn.wp-plugins.org/statpresscn/trunk [...]
热度:
下载升级:
请到wordpress官方插件网址下载最新版本,ftp到服务器上去;
或者,如果您的wordpress是2.7版本以上的,那就耐心等段时间(大约几个小时吧),管理后台会自动提示升级的;
提示:升级至本版本不会影响数据库中的数据记录。
升级需做:
无。
功能开发:
侧栏小工具“最热博文”中可设定时间范围了,比如最近7天的热文、最近三个月的热文等;
在管理面板上显示统计信息;
过滤掉user [...]
热度:
开发StatPressCN过程中恶补PHP和MYSQL知识,水平不行,只好边干边学,呵呵。对一些基础不高深的东东简单梳理下,免得忘了下次重来。
一、MYSQL
用MYSQL语句直接修改数据。update `db_name` set `urlrequested` = replace(`urlrequested`,’\”,”) where `urlrequested` like “%\’”,把以’结尾的链接请求末尾的’去掉。replace可以保证key的连续性,如果先删除后添加就没有这个好处了。
插入记录。INSERT INTO users(name, age) VALUES(‘姚明’, 25), (‘比尔.盖茨’, 50), (‘火星人’, 600);如果values中为空,则添加默认值为基础的记录。
更新记录。需要配合where条件判断。UPDATE users SET age = 30 WHERE id = 12;以上语句都很危险,如果where没有设置的话会更新所有的数据记录,所以在进行类似操作的时候一定要先备份,再审慎。
删除数据有两个命令delete和TRUNCATE。DELETE FROM users WHERE name = ‘Mike’ ORDER BY id DESC LIMIT 6;如果有自动增加的字段,用没有where的delete和truncate都会让这个字段从0开始,如果不想这样,可以用带where 1的语句,不过那样的执行效率很多,因为需要遍历整个数据库的所有记录;删除数据时如果使用形如like ‘$tmpstr%’的语句,一定要判断下$tmpstr是否为空,否则很危险,可能删除掉所有数据,后果严重的很。
正则表达式在where语句中也可使用,好爽,这下me对正则表达式的学习可以用了。官方文档参见这里。
二、PHP
分开字符串。$p = explode(“=”,$url);
打印出数组中的所有元素。print_r($p);
计算数组中的元素个数。count($p);
数组运算,类似于java中集合的概念,很方便。生成一个空数组:$bloglist = Array();向数组中增加一个或几个元素(从末尾):array_push($bloglist,$matches[1]);添加到数组头部之前则是array_unshift($bloglist,$matches[1]) ;从数组尾部删除一个元素用array_pop(),从头部删除一个元素则用array_shift();让数组中元素唯一(即无重复元素,类似于结合set的概念):$bloglist = array_unique($bloglist);迭代输出每个元素可以在foreach中使用as:foreach($bloglist as $blog);判断某元素是否在数组中:in_array($lookingFor, $bloglist),返回布尔值真假;数组中每个元素都有个默认的key,可以这样输出看看:while (list($key,$value) = each($bloglist)) {echo [...]
热度:
为了方便程序开发,必须要搭建一个开发环境。需要一个http服务器、支持mysql和php,这样才能在本机上运行wordpress。在网上找到了xampp,用了一段时间,感觉不错。稍微记一下,聊以备忘。
下载:apache friends - xampp
安装:下载安装版本一路next就行了,或者下载zip版本自己解压后运行xampp_setup.bat。
使用:
用管理面板启动Apache和mysql即可。需要注意的是请修改xampp安装目录下的apache\conf\httpd.conf,把#LoadModule [...]
近期评论