最近在做的一个小项目里需要对中文内容的相似度进行判断,PHP中是有现成的函数的——similar_text。
google出来的大量结果反馈说similar_text函数对中文字符串相似度的判断不是很好。
我做了一个实验:
- $b='海关罚没';
- $a='海==关==罚==没';
- similar_text($b,$a,$p);
- echo $p;
输出的结果为72.7272727273(这里是百分比),72.73%的相似度,这个结果已经很理想了。
我的PHP版本为5.2.9,不知道是否因为这个最新的版本提高了similar_text函数对中文的处理能力。
原文标题:Run PHP on the Google App Engine
原文地址:http://www.webdigi.co.uk/blog/2009/run-php-on-the-google-app-engine/
翻译正文:
一年前,Google发布了Google App Engine (GAE)。每个Google App Engine 应用程序都可免费使用多达 500MB 的持久存储空间以及可支持每月500万综合浏览量的足够带宽和 CPU。当然,你也可以查看详细的价格计划以获取更多的支持。
GAE现在已经能支持Java。不幸的是,GAE并不支持PHP。因此,在Google官方发布对PHP的支持之前,我们有一个替代方案。这个替代方案就是基于100%纯Java实现PHP(需要JDK 1.5)。
以下是在GAE上运行PHP的所有步骤:
1. 注册一个免费帐号
2.下载此文件
3.编辑war\WEB-INF\appengine-web.xml文件中的application标记为你所注册的应用名
4.最后上传你的应用。我下载了Google App Engine SDK for Java,并且在windows中运行了以下命令:
appcfg.cmd update C:\projects\phpwithjava\war
这里可以看到示例:
http://phpwithjava.appspot.com/webdigi.php
http://phpwithjava.appspot.com/info.php
注意: phpwithjava是我的GAE的应用名
开源项目地址:http://github.com/jdp/twitterlibphp/tree/master
按照例子来做会出错,下面是我自己调整过的范例
- require_once('./twitter.lib.php');
- $user = "yourname";
- $pw = "yourpassword";
- $twitter = new Twitter($user,$pw);
- $xml = $twitter->getUserTimeline(array(),'rss');
- echo $xml;
最近要开发一个工期短但是需求繁杂的PHP项目。
工欲善其事,必先利其器。作为项目的前期准备,自然是要寻找合适的开发工具。起初是打算用delphi for php,但是仔细一想,delphi for php主要还是解决了界面上的问题,从开发的角度,还是用开发框架比较合适。
考虑到这个项目上线后的同时在线人数不会太多,因此性能上的要求不高,我选择了毕竟是官方出品的zend framework——没想到已经更新到1.8版本了。
昨晚先搞定了iis+isapi rewrite下的zend framework搭建,颇费了一番周折。
一开始用官方手册给的配置文件,出现了不论采用什么controller和action总是会访问index。也就是说,当URL为:
http://localhost/news/display 或 http://localhost/index/login等等时,它总是访问的http://localhost/index/index
仔细查找各种原因,这才发现,原来我的IIS里装了两套isapi rewrite,删除掉版本比较旧的那个就OK了。
官方的配置文件完全可用,具体如下:
RewriteRule ^[\w/\%]*(?:\.(?!(?:js|ico|gif|jpg|png|css)$)[\w\%]*$)? /index.php [I]
下图是某具备一定用户基数的网站用户分辨率状况,可以看出,800×600分辨率只占据了该网站访问的3.34%,主流已经是1024×768及以上的分辨率。由此,宽屏网页设计已成必然趋势,而在最近这一年时间里,各大门户已经纷纷完成了宽屏改版的工作。

究竟选择什么样的宽度来做宽屏网页的设计?
我收集整理了一下目前国内外部分网站的宽屏网页的宽度。
sina首页、sohu首页、英文yahoo首页:950px
163首页:960px
QQ首页:910px
由以上可以看出,主流的宽屏网页宽度基本为950px。
我个人非常赞同采用950px这一标准,理由如下:
1.可以更好的采用标准广告位尺寸。
由于种种原因,目前并没有宽屏分辨率下的网页广告位尺寸国际标准出台(至少我翻查了很多资料都没有找到)。传统窄屏网页的国标广告位尺寸基本还在宽屏网页上延续,以下为旧标准尺寸:468×60、728×90、234×60、125×125、120×600、160×600、180×150、120×240、200×200、250×250、300×250、336×280。采用标准广告位尺寸对网站有莫大的好处:Google、alimama、baidu及各网站联盟均采用的是国标广告位尺寸,无需修改即可直接嵌入到网页中;另外,各厂商广告代理、公关公司等在制作互联网广告的过程中也是采用的国标广告位位尺寸,同样无需对网页或广告素材进行任何修改就可以嵌入网页中,这一点对于广告业务繁忙的网站而言,非常重要。
以468×60的广告位举例。可以一行放置2个468×60的广告位,目前部分宽屏网站也是采用此方式放置广告。
1+468+1+10+1+468+1=950
2.可以更好的符合网页栅格系统设计原理。
关于这点我就不一一赘述了,详情可以点击这里。
看了篇文章提到采用eaccelerator来提高PHP程序的执行效率,尝试了一下,效果明显,从监测来看,在节省了服务器资源的前提下,至少提高了50%。
1.安装
官方主页: http://eaccelerator.net
目前最新版为0.9.5.3
下载后:
# tar xvf eaccelerator-0.9.5.3.tar.bz2
# cd cd eaccelerator-0.9.5.3
# export PHP_PREFIX=”/usr” 注:这里是PHP的安装路径
# $PHP_PREFIX/bin/phpize
# ./configure \
–enable-eaccelerator=shared \
–with-php-config=$PHP_PREFIX/bin/php-config
# make
# make install
更新动态链接库:
# echo “/usr/lib/php/extensions” > /etc/ld.so.conf
# ldconfig
2.配置
修改php.ini文件
2.1把 eaccelerator 做为 Zend 的扩展模块来编译的方法
zend_extension=”/usr/lib/php/extensions/eaccelerator.so” 注:模块的具体位置;
eaccelerator.shm_size=”16″ 注:共享内存大小;
eaccelerator.cache_dir=”/home/eaccelerator” 注:缓存目录;
eaccelerator.enable=”1″
eaccelerator.optimizer=”1″
eaccelerator.check_mtime=”1″
eaccelerator.debug=”0″
eaccelerator.filter=”"
eaccelerator.shm_max=”0″
eaccelerator.shm_ttl=”0″
eaccelerator.shm_prune_period=”0″
eaccelerator.shm_only=”0″
eaccelerator.compress=”1″
eaccelerator.compress_level=”9″
如果您的PHP是用安装模式编译的,要把 zend_extension改为zend_extension_ts
2.2把 eaccelerator 做为 PHP的一个扩展的配置方法
extension=”eaccelerator.so”
eaccelerator.shm_size=”16″
eaccelerator.cache_dir=”/home/eaccelerator”
eaccelerator.enable=”1″
eaccelerator.optimizer=”1″
eaccelerator.check_mtime=”1″
注意/home/eaccelerator的目录权限应该是0777
3.重启APACHE,如果/home/eaccelerator中有新的文件生成,那么安装就成功了。
由于家里台式机的机器配置不太好,因此自从给老婆买了MacBook后,这台台式机就一直空闲在一边吸收灰尘。
原本一直想把这台机器完全格了装LINUX,配置差点,运行Linux作为LAMP环境也还凑合,可惜一直没有时间去弄张CentOS的盘。考虑到国庆期间会有比较多的开发工作,今晚找了张XP的盘重新装了下系统。
so,台式机终于重新启用了——只做为WAMP的开发机器使用。
以前我一直在NOTEBOOK上开发,现在多了台机器做开发,怎么同步开发进度?很好解决,DreamHost提供一键安装SVN,我只需要把代码SVN签入签出就能保证代码一致了。
遇到一个古怪的问题,原本是用iconv进行UTF-8码到GB2312的转码,但是遇到一些字符就无法正常转码了,比如“——”,又比如一些繁体字,百思不得其解之下,换了一个函数mb_convert_encoding来做转码,结果正常了。
不知道原理,记录一下,以后尽可能用mb_convert_encoding做字符编码转换。
以下内容转自http://php.daheit.com/?action=show&id=24,我个人觉得该文描述的搭建过程算比较完善的。
先准备一下软件:
curl-7.16.2.tar.gz
expat-2.0.0.tar.gz
gzip-1.3.5.tar.gz
libxml2-2.6.23.tar.bz
zlib-1.2.3.tar.gz
jpegsrc.v6b.tar.gz
libpng-1.2.12.tar.gz
freetype-2.3.4.tar.gz
gd-2.0.34.tar.gz
httpd-2.2.4.tar.gz
php-5.2.2.tar.gz
ZendOptimizer-3.2.8-linux-glibc21-i386.tar.gz
linux as4操作系统:界面、应用软件、管 理软件、服务器自带软件、其它等通通的不用安装,既然做服务器就要把服务器整理干净,linux自定义安装,我只选择安装了FTp软件(vsftpd)、 开发工具包(这个当然必须要选的啊,编译全靠它来为我们出力!)二项,其它什么都不装。(够很吧!!!)
下面所需要的软件一步一步都有文件名,在这先不一一列出,请往下看,建议安装这些软件前,一定要先通读这篇文章的全文,把每一步所需要的软件先准备好。
建议你把软件包选择.tar.gz的,并且统一放到/usr/local/src目录下,一定要养成好习惯,呵呵,这样对自己很有好处的。
一。安装mysql
我用的软件是最新的mysql-5.0.41.tar.gz (大家在网上、mysql官方站上下载时一定要搞清楚了!版本可不能错,因为每一个版本的mysql都有很多种不同的编译版与不用编译版,我用的这个是自 编译版的!如果你自行下载的请先解压缩后,用写字版打开包里的configure这个文件,看看是需要编译的还是不用编译的,如果这个文件打开只有十几行 E字,告诉你说,此版本不用编译,解开放在目录里就能用了,那样的软件我不能保证在这篇文档里的可用性!)
好,费话少说,开始PHP环境重头戏,mysql的安装,安装好与坏,直接关系到最后PHP的编译成功与否!!
cd /usr/local/src //进入此放软件包的目录
groupadd mysql // 建立mysql组
useradd mysql -g mysql //建立mysql用户并且加入到mysql组中
tar -zxvf mysql5.0.41.tar.gz //解压缩
cd mysql5.0.41 //进入解开包的目录
./configure –prefix=/usr/local/mysql –with-charset=gb2312 –with-extra-charsets=gbk,gb2312 //这条命令里的参数一定不能乱写乱搞,不然谁也没法保证你编译的mysql能用。如果你搞不明白这些参数怎样设计、并且E文稍微不错的话,那你就先在本 地一台电脑里用记事本、写字板、editplus等任何文本软件打开包里的configure文件,呵呵,都是程序与代码、打开可不是让你去改的啊,呵 呵,最好远观可千万别近玩啊!向下看看,你会发现大段的参数,大致在986行开始你会发现”Configuration:“字样,到1193行中间,这一 大段的代码大多与配置参数有关的说明,每一个参数都有详细的说明。这里不多做介绍,其它我是让它默认的。我第一次安装编译时参数是–with- charset=gb2312 –with-extra-charsets=all这样做,我是让它默认字符集为gb2312,其它安符扩展全装,我认为把所有的都加进去了,那一定是 没有问题的吧,安装编译是顺利完成了,但当进入linux命令行下输入/usr/local/mysql/bin/mysql -u root -p敲回车时,提示一大段的错误信息,说gb2312根本没有被编译进去,你说怪不怪,没办法,只好重新编译,写成./configure –prefix=/usr/local/mysql –with-charset=gb2312 –with-extra-charsets=gbk,gb2312这样。如果顺利执行完毕,没有错误信息提示,那么恭喜你了,但不要高兴太早,下面才很 重要呢。
make && make install //安装,如果这一步也很顺利完成,恭喜,mysql基本完成差不多了。下面都很简单了。
cd script //进入到脚本目录下
./mysql_install_db –uer=mysql //安装库文件,应该会提示说OK!的。
cd /usr/local/mysql //进入到安装的mysql软件目录中
chown -R root . //设定root能访问/usr/local/mysql
chown -R mysql var //设定mysql用户能访问/usr/local/mysql/var ,里面存的是mysql的数据库文件.这个目录是在/etc/my.cnf中有配置,在mysql_install_db时产生。
chown -R mysql var/. //设定mysql用户能访问/usr/local/mysql/var/mysql下的所有文件
chgrp -R mysql . //设定mysql组能够访问/usr/local/mysql
# 上面的已经把mysql完全安装完了,也能正常使用了,但还不够,你要将mysql的数据库启动脚本加入系统启动目录,不然,你总不能每次启动服务器后,都要登陆上去手工启动数据库吧,那还不麻烦死。
cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod 700 /etc/rc.d/init.d/mysqld
ln -s /etc/rc.d/init.d/mysqld /etc/rc.d/rc3.d/S97mysqld
/etc/rc.d/init.d/mysqld start //来启动mysql进程 然后
/usr/local/mysql/bin/mysqladmin -u root password ‘yourpassword’ //默认安装密码为空,为了安全你必须马上修改.请注意,你修改执行此命令时,一定不要加yourpassword两边的单引号或者双引号,比如你想设定 密码是123456 就直接执行 /usr/local/mysql/bin/mysqladmin -u root password 123456 而不要写成 /usr/local/mysql/bin/mysqladmin -u root password ’123456′ ,这样加引号,你的密码也是带引号的。我以开始就是,加引号,用123456登陆mysql,怎么也进不去,就是提示密码错误,呵呵。
二。安装php、gd库所需要的配件文件
//注意这些软件的安装步骤及先后顺序,不要乱。特别是jpeg,png,freetye与gd库
A.curl
curl安装
cd /usr/local/src //进入软件存放目录
tar -zxvf curl-7.16.2.tar.gz
./configure –prefix=/usr/local/curl
make && make install //这个小软件很简单,不明白什么意思,到网上查资料吧。
B.expat
cd /usr/local/src
tar -zxvf expat-2.0.0.tar.gz
cd expat-2.0.0
./configure –prefix=/usr/local/expat
make && make install
C.gzip安装
cd /usr/local/src
tar -zxvf gzip-1.3.5.tar.gz
cd /gzip-1.3.5
./configure –prefix=/usr/local/gzip
make && make install
D.libxml2安装
cd /usr/local/src
tar -xjvf libxml2-2.6.23.tar.bz //这个我下的是.bz的,你下的如果是.gz的就执行 tar -zxvf libxml2-6.23.tar.gz
cd /libxml2-2.6.23
./configure –prefix=/usr/local/libxml2
make && make install
E.zlib安装
cd /usr/local/src
tar -zxvf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure //这个配置编译命令不要加目录参数,我试过的,加上–prefix=/usr/local/zlib这个参数,在这里是一定会顺利编译通的,但可惜的 是,到下面你编译gd库时,是不会通过的,到时就是会出问题,也真怪了,这些问题不是摸索出来,我是不会相信的。网友们自己有空了也可以多试试,看看为什 么不能加参数。
make && make install
F.安装 jpeg6
CODE:
建立目录:
mkdir -p /usr/local/jpeg6
mkdir -p /usr/local/jpeg6/bin
mkdir -p /usr/local/jpeg6/lib
mkdir -p /usr/local/jpeg6/include
mkdir -p /usr/local/jpeg6/man
mkdir -p /usr/local/jpeg6/man1
mkdir -p /usr/local/jpeg6/man/man1
cd /usr/local/src
tar -zvxf jpegsrc.v6b.tar.gz
cd jpeg-6b
./configure –prefix=/usr/local/jpeg6/ –enable-shared –enable-static
make && make install
G.安装libpng
cd /usr/local/src
tar -zvxf libpng-1.2.12.tar.gz
cd libpng-1.2.12
./configure //这个如同上面zlib的说明一样,不要带参数,让它默认安装到相应目录
make && make install
H.安装 freetype
cd /usr/local/src
tar -zvxf freetype-2.3.4.tar.gz
cd freetype-2.3.4
mkdir -p /usr/local/freetype
./configure –prefix=/usr/local/freetype
make && make install
I.安装GD库
//下面开始另一个重要的工作,安装gd库,因为gd库在window操作系统下默认是自带有的,但到linux下,必须得自己安装,不然,很多目 前流行的论坛图水印功能、缩略图功能等都不能用,打开自己的网站图片大的大小的小,严重变形,影响美观,所以下决心要整冶好gd库。
//这个gd库的安装是目前第四重要的软件。呵呵,第一个当然是php了,老二就是apache了,老三还用说吗是mysql,老四就是gd库了。呵呵。
<!– #Reading{float:right;margin-left:10px;font-size:12px;} –>
cd /usr/local/src
tar -zvxf gd-2.0.34.tar.gz
mkdir -p /usr/local/gd
cd gd-2.0.34
./configure –prefix=/usr/local/gd –with-jpeg=/usr/local/jpeg6/ –with-png –with-zlib –with-freetype=/usr/local/freetype/
//大家看到了吧,在这些参数中,由于上面安装zlib、png二个软件没有指定目录,所以这里也不要指定了。
//第一次安装测试时,上面zlib、png都很顺利编译通过,但到了这里,总是提示找不到freetype/png等相应的路径啊什么的。
make && make install
J.apache2安装
//下面进行老二的安装,呵呵。
cd /usr/local/src
tar -zxvf httpd-2.2.4.tar.gz
cd httpd-2.2.4
./configure –prefix=/usr/local/apache2 –enable-module=most –enable-rewrite –enable-shared=max –enable-so
//php的编译参数就更多了,呵呵,自己如果有兴趣就可以专门研究一下,你研究了要告诉我一声。向你学习.
make && make install
//两条命令,注意,最后一个命令是让apache2编译出所有的so文件,apache2以DSO模式运行。
K.php5安装
//下面进入最重要的老大的安装,所以它必须放在最后,呵呵,因为它要用到前面很多软件的。
cd /usr/local/src
tar -zxvf php-5.2.2.tar.gz
cd php-5.2.2
./configure –prefix=/usr/local/php5 –with-apxs2=/usr/local/apache2/bin/apxs –with-freetype=/usr/local/freetype –enable-trace-avrs –with-mysql=/usr/local/mysql –with-zlib –with-libxml=/usr/local/libxml2 –enable-shared –with-curl=/usr/local/curl –with-expat=/usr/local/expat –with-gd=/usr/local/gd –with-jpeg-dir=/usr/local/jpeg6 –with-png –enable-mbstring=all –enable-mbregex –enable-so
//这里的参数指定,我是看了又看,唯恐写错一个字符,害了大家啊。这里千万不能错。等你有经验写文档时,请一定也要尊重你的读者,不然害人可不浅啊,等别人拿着你的文档编译时,就是编译不了,你说,当时他会急成什么样,特别是如我一族,没有人在旁边指导啊!
make && make install
cp php.ini-dist /usr/local/php5/lib/php.ini
L。Zend的安装
cd /usr/local/src
tar -zxvf ZendOptimizer-3.2.8-linux-glibc21-i386.tar.gz
cd ZendOptimizer-3.2.8-linux-glibc21-i386
./install //执行这个安装命令就可以了,哎,上帝啊,什么时候php、mysql、apache、gd这几大软件在linux下也能像Zend这样自动啊,一个命令,下面就是下一步下一步,我们这等小民也不会那么受罪与累了。
//在这里下一步的过程中,一定要明白你的php.ini的路径是在/usr/local/php5/lib/目录下,不能填错了。
//另外的话:
到这里,如果你还像我说的一样,顺利的话,恭喜恭喜恭喜你,你太有才了,真不容易走这一关。
至于怎么配置php.ini与虚拟主机httpd-vhost.conf那就等我有空专门整理成篇再说好吗各位(最重要的是,配置这二个文件就很简单了,并且网上一般错的很少,呵呵)?
你如果整理的很好、或者急需要知道怎样配置的话,可以在下面给我留言。
当然,如果大家要转载这个文章,请一定要加上
/* 养成好习惯,尊重别人也是尊重自己
Author:白开水
QQ:75094040
Email:daheit@163.com
Blog:http://blog.daheit.com
PHP tech:http://php.daheit.com
*/