2008年3月30日星期日

通用PHP动态生成静态HTML网页的代码

  最近研究PHP的一些开发技术,发现PHP有很多ASP所没有的优秀功能,可以完成一些以前无法完成的功能,例如动态生成HTML静态页面,以减少服务器CPU的负载,提高用户访问的速度。

  我们知道,PHP读取MYSQL动态显示,在访问量大的情况下,会有很多性能问题,如果租用别人的虚拟主机,则会因为CPU消耗过多而被限制CPU,导致网页无法访问。我这里给出一个PHP动态生成HTML的方法,可以极大降低服务器CPU负荷。

  首先设置.htaccess文件,将动态调用的参数转换为静态的HTML的URL地址,例如将在post目录下的文件,转发到根目录的wp-post.php文件中,加入的语句类似:

RewriteRule ^post/([a-z0-9-]+.html)$  wp-post.php?$1$2

  然后修改wp-post.php文件,在文件的开头加入以下PHP代码:

ob_start();
$qstring = isset($_SERVER["QUERY_STRING"]) ? $_SERVER["QUERY_STRING"] : "";
define("HTML_FILE",  $_SERVER['DOCUMENT_ROOT']."/post/".$qstring);

if (file_exists(HTML_FILE))
{
 $lcft = filemtime(HTML_FILE);
 if (($lcft + 3600) > time())  //判断上次生成HTML文件是否超过1小时,若没有才直接输出文件内容
 {
  echo(file_get_contents(HTML_FILE));
  exit(0);
 }
}

  之后是现有的PHP的代码,然后在当前代码的最后面加上如下的PHP代码:

define("HTMLMETA","<!-- this is a real static html file created at ".date("Y-m-d H:i:s")." -->");
$buffer = ob_get_flush();
$fp = fopen(HTML_FILE, "w");
if ($fp)
{
 fwrite($fp, $buffer.HTMLMETA);
 fclose($fp);
}

  好了,然后查看你的静态HTML页面,如果页面尾部出现了注释行,说明已经成功的创建了静态HTML文件。

  这个方法的一个应用就是我先前写的那个“WordPress年度博客统计插件”,这个统计插件由于查询十多次数据库,很多人访问的时候会有很大性能问题,使用我介绍的这种动态生成HTML技术后,一天就查询一次,生成一次统计排行,完美解决了查询数据库的性能问题。

2008年3月29日星期六

从IIS的ASP迁移到APACHE的PHP的方法

  目前在网站服务器软件市场中,开放源码的Apache服务器占据了60%的市场份额,而微软免费捆绑在操作系统当中的IIS排名第二,其市场份额为31%,从总体上看,目前的网站服务器软件市场已经被Apache和IIS瓜分。

  一般从性能上通常都认同Apache的性能优于IIS,虽然IIS的操作管理界面非常简单易用,但是从IIS平台迁移到Apache平台依然是大势所趋,今天我就介绍几种从IIS的ASP转换到Apache的PHP的方法。

  通过插件模拟运行ASP

  通过一些公司的产品,直接让IIS的ASP代码正常运行于Apache环境,目前主要的产品有:

  Apache::ASP  http://www.apache-asp.org/

  SUN ONE ASP  http://www.sun.com/software/chilisoft/

  iASP http://www.instantasp.co.uk/

  通过程序转换ASP到PHP

  ASP和PHP都是很易用的网页脚本语言,目前有一些第三方程序可以将ASP转换到PHP,例如免费的asp2php。

  asp2php 是一个把 ASP 转成 PHP 的转换程序,类似的转换程序还有Chilisoft、InstantASP 与 Free ASP,目前 asp2php 可以转换大部分的ASP程序,不过,转换过程中有一些Bug,需要手动进行源代码的调整。

  使用Windows环境调用COM

  如果使用Windows + Apache的环境,那么数据库可以依旧使用Access或SQL Server数据库,使用PHP创建ADODB的COM组件后可以直接使用其命令,调用方法和ASP中的完全一样,示例代码如下:

$conn=new com("adodb.connection");
$conn->open("driver=microsoft access driver (*.mdb);dbq=member.mdb");
$rs=$conn->execute("select * from tablename");
while(! $rs->eof) {
  $f = $rs->Fields("username");
  echo $f->value;
  $rs->MoveNext();
}
$rs->close();
$conn->execute("update tablename set username='williamlong' ");

2008年3月28日星期五

GoDaddy无法从中国访问

  Godaddy是世界上最大的域名注册商和顶尖的主机服务商,也是ICANN(互联网名称与数字地址分配机构)的顶级域名代理服务商,提供的域名产品价格相当低廉,目前注册一个COM域名,在国内的万网需要每年139元人民币,而在GoDaddy的价格为9.99美元(70元人民币),仅为国内价格的一半,而使用优惠码的话域名价格更只要6.95美元(49元),仅为万网的三分之一,为了节约域名注册费用,相信不少中国网民都在使用GoDaddy的域名服务,包括我在内,我一直都建议不要在国内注册域名,而现在,中国电信竟然将这个服务给屏蔽了。

  通过使用Tracert命令追踪路由,我们发现访问GoDaddy被202.97.33.126这个路由器阻止了。

GoDaddy已经无法从中国访问

  通过查询这个IP地址,我们发现这个路由器是电信骨干网的路由器,因此这个屏蔽行为无疑是电信所为。

中国电信骨干路由器

  众所周知,GoDaddy是个正规的域名注册商,没有提供违反中国法律的服务,中国电信没有权利禁止用户使用这个价格低廉的域名服务,虽然中国电信一直都有封锁国外优秀网站服务的传统,但这次干的也太邪门了吧,竟然开始屏蔽世界上最大的域名注册商,相信中国电信一定会给我们这些广大的网民一个合理的解释。

  根据读者的反馈,无法管理自己域名的,可以通过 https://mya.godaddy.com 这个地址救急。

  更新:3月28日,GoDaddy恢复正常。

  背景简介:Godaddy成立于1997年,是全球域名注册排名第一的服务商,全球市场占有率达18%。域名的附加服务很多,有blog,Email,email指向,停放页,出售页面等。而且GoDaddy的域名可以很方便的修改注册人信息(过户),将域名转移给其他会员。GoDaddy的域名注册价格也较为低廉,使用优惠码购买COM域名只有6.95美金,算上税钱也才7.15美金,折合人民币50块钱左右。

2008年3月27日星期四

百度Hi抢鲜体验和邀请发送

  百度Hi是百度推出的IM工具,和百度空间以及百度搜索具有一定的整合和集成,是一个具有一定特色的聊天工具,目前百度Hi正处于内测阶段,用户通过邀请可以使用。今天通过邀请我简单使用测试了一下百度的这个聊天工具,有一些初步的感受。

  一、界面精炼

  界面、配色和微软的MSN很像,但整体界面非常简练,无广告,类似GTalk的精练风格,这个值得赞扬。

界面精炼

  界面上可以直接进入自己的百度空间,和MSN类似。

  可以换肤,目前有两个皮肤。

  二、好友管理

  好友可以用多种形式显示。好友可以自定义头像。

好友管理

  好友可以分组。可以加入群。

  三、百度群

  允许用户加入一个群。这点比MSN要强。

百度群

  邀请30个用户即可创建一个群。(这招厉害啊)

  创建群要登记个人信息和手机号码,下面是建立群时候出现的界面。(实名制?)

创建群

  四、设置和管理

  系统设置的界面可以设置一些个人信息。

系统设置

  消息管理器和腾讯QQ的界面好相像啊。

消息管理器

  五、登陆机制

  可以通过百度帐号登录,登录后也可以设置通过电子邮件登陆百度Hi。

  目前百度Hi需要邀请才能使用,如果你需要一个百度Hi的邀请,请先注册百度帐号,然后将你的百度帐号发邮件到我的信箱 williamlone+baidu@gmail.com 即可获得邀请,登录百度查看个人消息可看到邀请链接。

2008年3月26日星期三

谷歌Google.CN新界面

  今天发现Google正在测试中文版的新界面,类似韩国的动画效果,显得比较生动。这个新界面并非在所有浏览器下都显示,也并非所有的地区都显示,估计还是一个测试阶段的版本,正式的版本应该会有更不错的体验。

  新的界面对于不同浏览器会有一些区别,我使用IE7打开Google.CN就看不到新界面,而使用IE6和FireFox 2.0就可以看到新的动画界面。不过是使用IE6在福建的一台服务器上访问Google.CN却没有看到新的效果,估计这个界面还对区域进行了一些判断。

  新的界面看上去感觉不错,对中国的新用户来说有点吸引力,不过对于经常搜索的用户来说,未必会对这几个小图标感兴趣。

谷歌Google.CN新界面

2008年3月25日星期二

AdSense屏蔽腾讯QQ币广告的技巧

  发现最近我的博客上的QQ币骗人的广告越来越多了,我们知道,QQ币广告基本上全都是骗人的,投放这种虚假广告,不仅仅广告单价极低,而且上当受骗的网民还可能迁怒于我们,真不知道AdSense为什么允许这种骗子广告发布,对于这种广告的屏蔽,最佳的方法是AdSense提供广告关键字过滤的功能,可惜Google不提供,不过,我也找到一个特殊的方法,可以逐步将QQ币广告屏蔽。

  首先,在博客上写一篇和“腾讯QQ”有关的文章,类似我的“AdSense屏蔽腾讯QQ币广告的秘籍”,有意在这篇文章上增加一些和“腾讯”、“QQ”等相关的关键字。

  接着,在这篇文章上加入三个AdSense“文字广告”(不要用图片广告,因为图片广告看不到网址),由于Google AdSense的广告是匹配文章内容而投放的,因此这篇文章将显示很多和腾讯QQ相关的广告,当然,大多数广告是QQ币欺诈广告。

  然后,我们就可以手动收集这些广告的URL地址,然后将其域名提取出来(不要提取子域名),然后将这些提取的域名形成一个列表。

  下面的工作大家都应该清楚了,就是登录AdSense,选择“AdSense竞争性广告过滤器”,通过过滤器将这些域名屏蔽。

  等待十多个小时,再刷新这篇关于腾讯QQ的文章,看看是否还有QQ币广告出现,如果还出现,则重复上述操作,直到没有任何和QQ相关的广告为止。

  经过这些操作,基本上就可以将所有骗人的QQ币广告屏蔽了,目前我的月光博客上已经再也看不到前段时间那满屏乱飞的QQ币广告了。

  另外,我发现这些骗子广告大多数是使用.cn域名批量注册的,目前该死的cn域名免费发放,搞欺诈网站的可算抓住机会了,注册域名不需要成本了,可以放心大胆地SPAM搜索引擎和Google了,我建议Google Adsense能够提供批量屏蔽带关键字域名的功能,这样才能将这些垃圾欺诈网站全部消灭。

  补充:我屏蔽以上QQ广告的域名列表参见这里

2008年3月24日星期一

WordPress系统的安装和使用简介

  这是一篇关于独立博客建站(以WordPress为例)的科普教程,讲述WordPress系统的一些最基本的常识,主要是为了那些不熟悉WordPress的新手阅读使用,帮助他们完成第一个独立博客的安装和使用。熟悉WordPress系统的老鸟可以忽略此文。

  WordPress是一个全球范围内最为著名的免费博客发布平台之一,在独立博客系统中的使用量一直排名第一。WordPress是基于PHP+MySQL架构的,都属于免费开源软件,在国际上几乎所有的虚拟主机都支持这种架构,搭建非常简单。

  WordPress是一个极易安装的独立博客系统,号称“5分钟安装”,就是说在大多数环境下WordPress安装过程只需要五分钟,这话倒也不假。整个安装的过程如下:

  一、安装

  1、下载安装包

  访问 http://wordpress.org/download 处下载的安装包。下载后的文件解压到本地一个目录。压缩包本身并不大,通常不到1M容量,目前最新版本为2.3.3.在 http://wordpress.org.cn 有WordPress中文语言包下载。

  2、上传文件

  使用FTP软件将本地所有的WordPress解压缩文件上传到服务器上。

  3、创建数据库

  在MySQL中使用phpMyAdmin或者其他用户创建一个MySQL数据库,这个数据库用于保存WordPress的数据。

  4、运行安装程序

  第一次运行上传的文件,WordPress系统会检测根目录下是否存在wp-config.php,如果不存在,会自动转到安装的界面,安装的时候属于一些必要的信息,例如博客的名称,电子邮件地址,数据库的名称,数据库用户名和密码等等,根据系统提示往下走,安装工作的最后一步,就可以获取到你的Wordpress用户名和密码,当然,系统还会自动把用户名和密码发送到你的电子信箱中。

  5、登录使用

  好了,现在已经安装完成,使用系统提供的密码登录系统后台,就可以管理这个博客系统了。登陆后可以将你的密码修改为你喜欢的一个密码。

  二、使用

  如果安装的是中文版的WordPress,登陆后台后会看到一个很简明的菜单,包括:撰写(Write)、管理(Manage)、评论(Comments)、链接(Blogroll)、主题(Presentation)、插件(Plugins)、用户(Users)、设置(Options).

  如果安装了中文语言包,这个界面应该全部是中文的,可以实现发布文章、编辑修改文章、删除评论、添加友情链接、选择界面主题模板、激活插件、修改用户密码、设置博客选项等等功能。

  三、个性化

  即使对于任何不懂编程、不懂网页设计的用户来说,也可以通过WordPress轻松实现各种个性化的博客界面,实现不同的个性化功能,这主要通过主题和插件两大功能来实现。

  1、主题(Presentation)

  WordPress主题是Wordpress界面显示效果的扩展。主题是放在WordPress的themes目录下,使用不同的主题就可以实现不同的界面,在主题菜单中选择你喜欢的界面,整个博客界面就会改变为这个新主题,WordPress系统自带的主题并不多,只有四个,不过我们可以去WordPress主题网站 http://themes.wordpress.net 那里寻找自己喜欢的主题,目前WordPress有成千上万的主题可供大家选择使用。通过使用WordPress主题,WordPress可以变成一个即漂亮有个性化的平台。

  2、插件(Plugins)

  WordPress插件是Wordpress应用功能的扩展。插件是放在WordPress的plugins目录下,WordPress的插件同样是成千上万,可以完成各种各样不同的功能,可以说大家想得到的功能几乎都有可用的插件下载,访问 http://wordpress.org/extend/plugins 就可以下载WordPress官方的上千个插件,来实现各种各样定制或者个性化的功能需求。通过使用WordPress插件,WordPress变成一个极具个性化且功能强大的内容管理工具。

  四、总结

  总的来说,WordPress是一个功能非常强大的主流独立博客平台,可以完成几乎你所想要的所有功能,各种第三方的资源和应用都非常丰富,目前不少国内外的著名博客作者都在使用WordPress系统。