<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>马丁博客</title>
	<atom:link href="http://www.blags.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.blags.org</link>
	<description>专注lamp的技术博客</description>
	<lastBuildDate>Wed, 01 Sep 2010 08:40:28 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		
<!-- Start Of Script Generated By WP-PostViews Plus -->
<script type='text/javascript' src='http://www.blags.org/wp-includes/js/jquery/jquery.js?ver=1.3.2'></script>
<script type="text/javascript">
/* <![CDATA[ */
jQuery.ajax({type:'GET',url:'http://www.blags.org/wp-content/plugins/wp-postviews-plus/postviews_plus.php',data:'todowppvp=add&type=/feed/&id=1',cache:false,dataType:'script'});
/* ]]> */
</script>
<!-- End Of Script Generated By WP-PostViews Plus -->
	<item>
		<title>HTTP 状态代码</title>
		<link>http://www.blags.org/http-status-code/</link>
		<comments>http://www.blags.org/http-status-code/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 08:39:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[WEB]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[状态码]]></category>

		<guid isPermaLink="false">http://www.blags.org/?p=633</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160;如果向您的服务器发出了某项请求要求显示您网站上的某个网页（例如，当用户通过浏览器访问您的网页或在 Googlebot 抓取该网页时），那么，您的服务器会返回 HTTP 状态代码以响应该请求。
此状态代码提供了有关请求状态的信息，且为 Googlebot 提供了有关您网站和请求的网页的信息。
一些常见的状态代码为：

200 &#8211; 服务器成功返回网页
404 &#8211; 请求的网页不存在
503 &#8211; 服务器暂时不可用

以下提供了 HTTP 状态代码的完整列表。点击链接可了解详细信息。您也可以访问有关 HTTP 状态代码的 W3C 页来了解详细信息。
1xx（临时响应）
用于表示临时响应并需要请求者执行操作才能继续的状态代码。



代码
说明


100（继续）
请求者应当继续提出请求。服务器返回此代码则意味着，服务器已收到了请求的第一部分，现正在等待接收其余部分。


101（切换协议）
请求者已要求服务器切换协议，服务器已确认并准备进行切换。



2xx（成功）
用于表示服务器已成功处理了请求的状态代码。



代码
说明


200（成功）
服务器已成功处理了请求。通常，这表示服务器提供了请求的网页。如果您的 robots.txt 文件显示为此状态，那么，这表示 Googlebot 已成功检索到该文件。


201（已创建）
请求成功且服务器已创建了新的资源。


202（已接受）
服务器已接受了请求，但尚未对其进行处理。


203（非授权信息）
服务器已成功处理了请求，但返回了可能来自另一来源的信息。


204（无内容）
服务器成功处理了请求，但未返回任何内容。


205（重置内容）
服务器成功处理了请求，但未返回任何内容。与 204 响应不同，此响应要求请求者重置文档视图（例如清除表单内容以输入新内容）。


206（部分内容）
服务器成功处理了部分 GET 请求。



3xx（已重定向）
要完成请求，您需要进一步进行操作。通常，这些状态代码是永远重定向的。Google 建议您在每次请求时使用的重定向要少于 5 个。您可以使用网站管理员工具来查看 Googlebot 在抓取您已重定向的网页时是否会遇到问题。



代码
说明


300（多种选择）
服务器根据请求可执行多种操作。服务器可根据请求者 (User agent) 来选择一项操作，或提供操作列表供请求者选择。


301（永久移动）
请求的网页已被永久移动到新位置。服务器返回此响应（作为对 GET 或 HEAD 请求的响应）时，会自动将请求者转到新位置。您应使用此代码通知 Googlebot 某个网页或网站已被永久移动到新位置。


302（临时移动）
服务器目前正从不同位置的网页响应请求，但请求者应继续使用原有位置来进行以后的请求。此代码与响应 GET 和 HEAD 请求的 301 代码类似，会自动将请求者转到不同的位置。但由于 Googlebot 会继续抓取原有位置并将其编入索引，因此您不应使用此代码来通知 Googlebot 某个页面或网站已被移动。


303（查看其他位置）
当请求者应对不同的位置进行单独的 GET 请求以检索响应时，服务器会返回此代码。对于除 HEAD 请求之外的所有请求，服务器会自动转到其他位置。


304（未修改）
自从上次请求后，请求的网页未被修改过。服务器返回此响应时，不会返回网页内容。
如果网页自请求者上次请求后再也没有更改过，您应当将服务器配置为返回此响应（称为 <a href="http://www.blags.org/http-status-code/" class="more-link">More &#62;</a>]]></description>
		<wfw:commentRss>http://www.blags.org/http-status-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mysql myisam innodb 区别</title>
		<link>http://www.blags.org/mysql-myisam-innodb-difference/</link>
		<comments>http://www.blags.org/mysql-myisam-innodb-difference/#comments</comments>
		<pubDate>Tue, 31 Aug 2010 16:36:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MYSQL]]></category>
		<category><![CDATA[InnoDB]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[MyIsam]]></category>
		<category><![CDATA[Tencent]]></category>

		<guid isPermaLink="false">http://www.blags.org/?p=632</guid>
		<description><![CDATA[最近连续接到了两次tencent的电话面试，当然不是同一个部门。都涉及到了一个mysql的基础知识问题。为了防止第三次打电话来,备注下。^^。
题目1：讲讲你对mysql myisam，innodb的认识。然后你认为他们的区别在那里?为什么?
答：这两个是mysql主要存储引擎。
简要介绍来自官网。
简要介绍:MyIsam
MyISAM是 默认存储引擎。它基于更老的ISAM代码，但有很多有用的扩展。（注意MySQL 5.1不支持ISAM）。
每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始，扩展名指出文件类型。.frm文件存储表定义。数据文件的扩展名为.MYD (MYData)。索引文件的扩展名是.MYI (MYIndex)。
简要介绍:InnoDB
InnoDB给MySQL提供 了具有提交，回滚和崩溃恢复能力的事务安全（ACID兼容）存储引擎。InnoDB锁定在行级并且也在SELECT语句提供一个Oracle风格一致的非锁定读。这些特色增加 了多用户部署和性能。没有在InnoDB中扩大锁定的需要，因为在InnoDB中行级锁定适合非常小的空间。InnoDB也支持FOREIGN KEY强制。在SQL查询中，你可以自由地将InnoDB类型的表与其它MySQL的表的类型混合起来，甚至在同一个查询中也可以混合。
InnoDB是为处理巨大数据量时的最大性能设计。它的CPU效率可能是任何其它基于磁盘的关系数据库引擎所不能匹敌的。
InnoDB存储引擎被完全与MySQL服务器整合，InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。InnoDB存储它的表＆索引在一个表空间中，表空间可以包含数个文件（或原始磁盘分区）。这与MyISAM表不同，比如在MyISAM表中每个表被存在分离的文件中。InnoDB 表可以是任何尺寸，即使在文件尺寸被限制为2GB的操作系统上。
InnoDB默认地被包含在MySQL二进制分发中。Windows Essentials installer使InnoDB成为Windows上MySQL的 默认表。
InnoDB被用来在众多需要高性能的大型数据库站点上产生。著名的Internet新闻站点Slashdot.org运行在InnoDB上。Mytrix, Inc.在InnoDB上存储超过1TB的数据，还有一些其它站点在InnoDB上处理平均每秒800次插入/更新的负荷。
简单概括几点如下:

通过不上不难看出，MyIsam InnoDB的用途，Myisam主要适用于中小型数据量。InnoDB引擎适用于大数据量。上面已经讲得很清楚拉。著名的开源电子商务系统[magento]就是采用InnoDB创建。
MyIsam写入速度比InnoDB快。
在使用InnoDB时候需要对my.cnf进行配置以保证mysql达到最大效率。详细可以查看官网[inndo性能调节]：http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html#innodb-tuning。

其中有很多人在网上发表了关于mysql MyIsam 和 InnoDB在存贮和读取方面的差异。暂时还没有做过度研究。
基本测试都是基于使用［事务］和不使用［事务］，进行对比。mysql对于［非事务表］速度会比较块。
原因：待查证。
猜测：设定了 innodb_flush_log_at_trx_commit 如果设置为1的话，那么每次插入数据的时候都会自动提交，导致性能急剧下降，应该是跟刷新日志有关系，设置为0效率能够看到明显提升，当然，同样你可以SQL中提交[SET AUTOCOMMIT = 0]来设置达到好的性能。另外，还听说通过设置innodb_buffer_pool_size能够提升InnoDB的性能。
通过上面的分析，在我们采用mysql存储引擎的时候要按需分配。针对不同的存储引擎要采用不同的数据设计。
题目2：开发过程中，遇到糟糕的sql语句你是怎么解决的。
答：使用mysql的［EXPLAIN］对sql进行解释。因该还有更多好方法。
mysql 常见问题可以查看：http://www.blags.org/mysql-error-daquan-and-solutions/
mysql存储引擎的介绍 ：http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html
以上如有不足之处，请大家帮忙补充,thk。
]]></description>
		<wfw:commentRss>http://www.blags.org/mysql-myisam-innodb-difference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>centos 本地化配置</title>
		<link>http://www.blags.org/centos-localization-configuration/</link>
		<comments>http://www.blags.org/centos-localization-configuration/#comments</comments>
		<pubDate>Fri, 20 Aug 2010 14:37:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[centos]]></category>

		<guid isPermaLink="false">http://www.blags.org/?p=627</guid>
		<description><![CDATA[最近使用svn更新的时候经常出现一些奇怪的错误。经过查询得知是本地化环境没有配置，导致的。记录以下解决方法。
本人环境：centos 5.x
错误现象：

View Code ERRORsvn: Valid UTF-8 data
(hex: 62 74 6e 5f 30 32)
followed by invalid UTF-8 sequence
(hex: b1 b8 b7 dd)

vim ~/.bash_profile [编辑配置文件]
在按下 shift + g 把 ~/.bash_profile
添加：

View Code SHELLexport SVN_EDITOR=vim
export LANG=zh_CN.UTF8
export LC_MESSAGES=&#34;en_US.UTF-8&#34;

]]></description>
		<wfw:commentRss>http://www.blags.org/centos-localization-configuration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mysql 错误大全以及解决方法</title>
		<link>http://www.blags.org/mysql-error-daquan-and-solutions/</link>
		<comments>http://www.blags.org/mysql-error-daquan-and-solutions/#comments</comments>
		<pubDate>Thu, 19 Aug 2010 06:48:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MYSQL]]></category>
		<category><![CDATA[Unix(Linux)]]></category>

		<guid isPermaLink="false">http://www.blags.org/?p=626</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160;&#160;最近一直在捣鼓mysql.中间遇到各种各样的问题,记录一下。
服务器环境:lamp (linux[centos],apache2,mysql(5.x),php(5.2X)).
linux 环境下。所有数据库以及用户信息的存放位置可以在（vim /etc/my.cnf）查看[datadir=/usr/local/mysql_data ].
备份好这个目录里面的数据就会将mysql用户信息已经数据信息全部备份好了。安装好新的mysql版本之后修改[datadir]的指向，重启mysql就可以读取到信息了。
本人为了省事就采用了[yum install mysql],当然也可以采用下载然后编译.
以上过程中可能出现的问题：

读取不到数据库信息(原因:移动datadir过程中权限也改变了［chown mysql:mysql -R datadir］) ,datadir是你的存放路径。
ERROR 2002 (HY000): Can&#8217;t connect to local MySQL server through socket &#8216;/var/lib/mysql/mysql.sock&#8217; (2),解决方法[查看是不是存在该文件。修改相应的路径 vim /etc/my.cnf，
查看是不是权限不对.ls -l ]. 
ERROR 2002 (HY000): Can&#8217;t connect to local MySQL server through socket &#8216;/var/lib/mysql/mysql.sock&#8217; (111),解决方法[修改相应的路径 vim /etc/my.cnf]
添加下面这段:

View Code MYSQL&#91;client&#93;
port            <a href="http://www.blags.org/mysql-error-daquan-and-solutions/" class="more-link">More &#62;</a>]]></description>
		<wfw:commentRss>http://www.blags.org/mysql-error-daquan-and-solutions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ubuntu 安装 ffmpeg php-ffmpeg</title>
		<link>http://www.blags.org/ubuntu-install-ffmpeg-php-ffmpeg/</link>
		<comments>http://www.blags.org/ubuntu-install-ffmpeg-php-ffmpeg/#comments</comments>
		<pubDate>Sun, 01 Aug 2010 16:23:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Hypertext Preprocessor]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Unix(Linux)]]></category>
		<category><![CDATA[ffmpeg]]></category>
		<category><![CDATA[lame]]></category>
		<category><![CDATA[mencoder]]></category>
		<category><![CDATA[php-ffmpeg]]></category>

		<guid isPermaLink="false">http://www.blags.org/?p=622</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160;最近在做一个视频网站安装本地环境费了不少时间。本地是ubuntu 9.10 而服务器是redhat as4 所以到时候本人会把服务器安装过程和大家分享出来。
本人环境如下

php &#8212;- 5.210
apache 2.2
ubuntu 9.10


ffmpeg 功能很强大包括视频抓图，视频信息，视频转换，在线视频录制，而且是免费的。所有一般的视频网站都会采用他。
本人首先是采用编译安装，但是一直都没有成功。编译过程中出现了很多问题。安装要使用ffmpeg往往需要编译很多包。感觉很麻烦。这些包又依赖于很多其他包。安装顺序也有要求。所以放弃了。
最终采用ubuntu 强大的 apt-get (使用dpkg进行安装) 进行安装（当然cenos,red hat这类使用rpm的系统都可以使用yum进行安装,具体的安装方法可以在本站进行查找）.
apt-get 安装步骤如下:
sudo apt-get update ##更新以下源
sudo apt-get install ffmpeg
sudo apt-get install php5-ffmpeg
sudo apt-get install mencoder
sudo apt-get install flvtool2 ##视频转换flv
sudo apt-get install lame ##音频
sudo apt-get install yasm
编译安装ffmpeg 如下:
从 http://ffmpeg.mplayerhq.hu 下载
./configure &#8211;help ##查看有那些参数
./configure&#8211;prefix=/usr&#8211;enable-gpl&#8211;enable-shared&#8211;enable-libmp3lame&#8211;enable-libamr_nb&#8211;enable-libogg&#8211;enable-libvorbis&#8211;enable-libxvid&#8211;enable-liba52&#8211;enable-liba52bin&#8211;enable-pp&#8211;enable-libfaad&#8211;enable-libfaadbin&#8211;enable-libfaac&#8211;enable-pthreads&#8211;disable-ffserver&#8211;enable-x11grab
如果报错则安装该包，或者直接去掉该参数，只需要配置自己使用过程中需要使用到的就行了。
make &#38; make install
其他的则一个一个的下载解压在编译就是了。
具体参考本文：centos+zendce+red5+ffmpeg安装配置


下面是php-ffmpeg 使用的api。功能是很少了。
如果需要给视频抓图择需要使用shell脚本。也就是用到php当中的(system,exec,passthru)这类执行外部命令函数。
往往很多服务器都将种类函数视为危险函数屏蔽掉了。所以想做视频网站对服务器的配置要求比较高。
当然最好是自己的独立服务器。vps 也可以。随便你怎么整都可以。


View Code PHP$movie = new ffmpeg_movie&#40;String path_to_media, <a href="http://www.blags.org/ubuntu-install-ffmpeg-php-ffmpeg/" class="more-link">More &#62;</a>]]></description>
		<wfw:commentRss>http://www.blags.org/ubuntu-install-ffmpeg-php-ffmpeg/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>centos 5.x 安装 zendOptimizer  5.x</title>
		<link>http://www.blags.org/centos-5-x-install-zend-optimizer-5-x/</link>
		<comments>http://www.blags.org/centos-5-x-install-zend-optimizer-5-x/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 08:55:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Unix(Linux)]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[zendOptimizer]]></category>

		<guid isPermaLink="false">http://www.blags.org/?p=621</guid>
		<description><![CDATA[最近在配置一台服务器，主要是lamp 环境。由于访问量不是很大就采用了lamp，访问量大可以采用lnmp环境。
这里我的前提是安装了lamp环境.
linux 环境 : Description:    CentOS release 5.5 (Final)
apache 环境 : apache 2.x
mysql 环境 : mysql 5.x
php 环境 : 5.2x
下面是简单的zend Optimizer 安装过程.

wget -q -O &#8211; http://www.atomicorp.com/installers/atomic.sh &#124; sh
这个过程已经下载配置好了yum，接下来就是一句话.
当然也可以直接冲官方下载再编译安装 (wget http://downloads.zend.com/optimizer/3.3.3/ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz)
yum install php-zend-optimizer
等待安装完成.
通过查看 phpinfo Loaded Configuration File 得到php.ini所在位置.
根据自己php的版本选择zend Optimizer 文件.例如 php 5.2x 选择zend Optimizer5.2x
在配置文件php.ini 最后部分添加.(vim /etc/php.ini)
[Zend]
zend_optimizer.optimization_level=15
zend_extension=&#8221;/usr/lib/php/zend/ZendOptimizer-5.2.so&#8221;

安装基本完成了.
service httpd restart
重启之后服务器网页刷新一下就自动关闭了。
后来一想，自己在之前已经安装了php-apc 同为加速器。估计有冲突。后台将php-apc 屏蔽掉，再重启下可以了。
下面是其他可能出现的问题解决方案
很多人说是slinux 出现了问题把。估计也不是空穴来潮。虽然我没有遇到。
方法如下:
vim /etc/selinux/config
#SELINUX=enforcin =&#62; SELINUX=disabled
重启下 selinux (service <a href="http://www.blags.org/centos-5-x-install-zend-optimizer-5-x/" class="more-link">More &#62;</a>]]></description>
		<wfw:commentRss>http://www.blags.org/centos-5-x-install-zend-optimizer-5-x/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>linux 安装配置 vsftpd (centos)</title>
		<link>http://www.blags.org/linux-centos-installl-confie-vsftpd/</link>
		<comments>http://www.blags.org/linux-centos-installl-confie-vsftpd/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 08:54:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Unix(Linux)]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[vsftpd]]></category>

		<guid isPermaLink="false">http://www.blags.org/?p=619</guid>
		<description><![CDATA[前提是安装了 linux ,yum,不会的可以查看此文章 red hat centos 安装 yum

yum update


 yum install vsftpd


 service vsftpd status 查看状态


备份配置文件 cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak


配置vsftpd  vim /etc/vsftpd/vsftpd.conf
本人配置:


View Code CONF# Example config file /etc/vsftpd/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
# Please see vsftpd.conf.5 for all <a href="http://www.blags.org/linux-centos-installl-confie-vsftpd/" class="more-link">More &#62;</a>]]></description>
		<wfw:commentRss>http://www.blags.org/linux-centos-installl-confie-vsftpd/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>red hat centos 安装 yum</title>
		<link>http://www.blags.org/red-hat-centos-install-yum/</link>
		<comments>http://www.blags.org/red-hat-centos-install-yum/#comments</comments>
		<pubDate>Sun, 06 Jun 2010 03:34:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Red Hat]]></category>
		<category><![CDATA[Unix(Linux)]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[freebsd]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[yum]]></category>

		<guid isPermaLink="false">http://www.blags.org/?p=616</guid>
		<description><![CDATA[最近配置了服务器需要安装软件方法有几种。

下载软件包 ，编译安装 (./configure,make,make install)这样安装配置性更高。相信高手都是这样安装的。
yum安装。这样安装起来比较简单。(yum install 软件包名称) 主要适用于(centos,red hat)等.
卸载：yum remove  软件包名称.
apt-get 安装 这个和yum安装差不多。(sudo apt-get install 软件包名称 ) 主要适用于(ubuntu ,debian).
卸载 : sudo apt-get autoremove 卸载所有相关包。
采用 package 方式安装 : 用 package 安装，只要抓取该程序 package 档案。
安装 (pkg_add package_name) 移除 (pkg_delete package_name) 就可以完成安装 / 移除。
注意 ：文件名称 .tgz 结尾的是 package 文件名称 .tar.gz 结尾的是 source 。
注 : 目前已经安装的 package 数据库放在 /var/db/pkg/ 这个数据夹之中。
另外还有 port tree 方式安装 <a href="http://www.blags.org/red-hat-centos-install-yum/" class="more-link">More &#62;</a>]]></description>
		<wfw:commentRss>http://www.blags.org/red-hat-centos-install-yum/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>html5 实现 flash</title>
		<link>http://www.blags.org/html5-achieve-flash/</link>
		<comments>http://www.blags.org/html5-achieve-flash/#comments</comments>
		<pubDate>Sat, 05 Jun 2010 02:22:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[WEB SEO]]></category>
		<category><![CDATA[浏览器]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[Smokescreen]]></category>

		<guid isPermaLink="false">http://www.blags.org/?p=615</guid>
		<description><![CDATA[ html5 在一年前就已经进入我们耳中了。但是一直都没有看到实际性的东西出来。下面这段相信会让大家眼前一亮。]]></description>
		<wfw:commentRss>http://www.blags.org/html5-achieve-flash/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>如何提高PHP编程效率</title>
		<link>http://www.blags.org/how-to-improve-the-efficiency-of-php-programming/</link>
		<comments>http://www.blags.org/how-to-improve-the-efficiency-of-php-programming/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 01:42:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Hypertext Preprocessor]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[编程效率]]></category>

		<guid isPermaLink="false">http://www.blags.org/?p=614</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160;用单引号代替双引号来包含字符串，这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量，单引号则不会，注意：只有echo能这么做，它是一种 可以把多个字符串当作参数的“函数”（译注：PHP手册中说echo是语言结构，不是真正的函数，故把函数加上了双引号）。
1、如果能将类的方法定义成static，就尽量定义成static，它的速度会提升将近4倍。
2、$row[’id’] 的速度是$row[id]的7倍。
3、echo 比 print 快，并且使用echo的多重参数（译注：指用逗号而不是句点）代替字符串连接，比如echo $str1,$str2。
4、在执行for循环之前确定最大循环数，不要每循环一次都计算最大值，最好运用foreach代替。
5、注销那些不用的变量尤其是大数组，以便释放内存。
6、尽量避免使用__get，__set，__autoload。
7、require_once()代价昂贵。
8、include文件时尽量使用绝对路径，因为它避免了PHP去include_path里查找文件的速度，解析操作系统路径所需的时间会更少。
9、如果你想知道脚本开始执行（译注：即服务器端收到客户端请求）的时刻，使用$_SERVER[‘REQUEST_TIME’]要好于time()。
10、函数代替正则表达式完成相同功能。
11、str_replace函数比preg_replace函数快，但strtr函数的效率是str_replace函数的四倍。
12、如果一个字符串替换函数，可接受数组或字符作为参数，并且参数长度不太长，那么可以考虑额外写一段替换代码，使得每次传递参数是一个字符，而不是只写一行代码接受数组作为查询和替换的参数。
13、使用选择分支语句（译注：即switch case）好于使用多个if，else if语句。
14、用@屏蔽错误消息的做法非常低效，极其低效。
15、打开apache的mod_deflate模块，可以提高网页的浏览速度。
16、数据库连接当使用完毕时应关掉，不要用长连接。
17、错误消息代价昂贵。
18、在方法中递增局部变量，速度是最快的。几乎与在函数中调用局部变量的速度相当。
19、递增一个全局变量要比递增一个局部变量慢2倍。
20、递增一个对象属性（如：$this-&#62;prop++）要比递增一个局部变量慢3倍。
21、递增一个未预定义的局部变量要比递增一个预定义的局部变量慢9至10倍。
22、仅定义一个局部变量而没在函数中调用它，同样会减慢速度（其程度相当于递增一个局部变量）。PHP大概会检查看是否存在全局变量。
23、方法调用看来与类中定义的方法的数量无关，因为我（在测试方法之前和之后都）添加了10个方法，但性能上没有变化。
24、派生类中的方法运行起来要快于在基类中定义的同样的方法。
25、调用带有一个参数的空函数，其花费的时间相当于执行7至8次的局部变量递增操作。类似的方法调用所花费的时间接近于15次的局部变量递增操作。
26、Apache解析一个PHP脚本的时间要比解析一个静态HTML页面慢2至10倍。尽量多用静态HTML页面，少用脚本。
27、除非脚本可以缓存，否则每次调用时都会重新编译一次。引入一套PHP缓存机制通常可以提升25%至100%的性能，以免除编译开销。
28、尽量做缓存，可使用memcached。memcached是一款高性能的内存对象缓存系统，可用来加速动态Web应用程序，减轻数据库负载。对运算码 (OP code)的缓存很有用，使得脚本不必为每个请求做重新编译。
29、当操作字符串并需要检验其长度是否满足某种要求时，你想当然地会使用strlen()函数。此函数执行起来相当快，因为它不做任何计算，只返回在 zval 结构（C的内置数据结构，用于存储PHP变量）中存储的已知字符串长度。但是，由于strlen()是函数，多多少少会有些慢，因为函数调用会经过诸多步 骤，如字母小写化（译注：指函数名小写化，PHP不区分函数名大小写）、哈希查找，会跟随被调用的函数一起执行。在某些情况下，你可以使用isset() 技巧加速执行你的代码。
（举例如下）
if (strlen($foo) &#60; 5) { echo “Foo is too short”$$ }
（与下面的技巧做比较）
if (!isset($foo{5})) { echo “Foo is too short”$$ }
调用isset()恰巧比strlen()快，因为与后者不同的是，isset()作为一种语言结构，意味着它的执行不需要函数查找和字母小写化。也就是说，实际上在检验字符串长度的顶层代码中你没有花太多开销。
34、当执行变量$i的递增或递减时，$i++会比++$i慢一些。这种差异是PHP特有的，并不适用于其他语言，所以请不要修改你的C或Java代码并 指望它们能立即变快，没用的。++$i更快是因为它只需要3条指令(opcodes)，$i++则需要4条指令。后置递增实际上会产生一个临时变量，这个 临时变量随后被递增。而前置递增直接在原值上递增。这是最优化处理的一种，正如Zend的PHP优化器所作的那样。牢记这个优化处理不失为一个好主意，因 为并不是所有的指令优化器都会做同样的优化处理，并且存在大量没有装配指令优化器的互联网服务提供商（ISPs）和服务器。
35、并不是事必面向对象(OOP)，面向对象往往开销很大，每个方法和对象调用都会消耗很多内存。
36、并非要用类实现所有的数据结构，数组也很有用。
37、不要把方法细分得过多，仔细想想你真正打算重用的是哪些代码？
38、当你需要时，你总能把代码分解成方法。
39、尽量采用大量的PHP内置函数。
40、如果在代码中存在大量耗时的函数，你可以考虑用C扩展的方式实现它们。
41、评估检验(profile)你的代码。检验器会告诉你，代码的哪些部分消耗了多少时间。Xdebug调试器包含了检验程序，评估检验总体上可以显示出代码的瓶颈。
42、mod_zip可作为Apache模块，用来即时压缩你的数据，并可让数据传输量降低80%。
43、在可以用file_get_contents替代file、fopen、feof、fgets等系列方法的情况下，尽量用 file_get_contents，因为他的效率高得多！但是要注意file_get_contents在打开一个URL文件时候的PHP版本问题；
44、尽量的少进行文件操作，虽然PHP的文件操作效率也不低的；
45、优化Select SQL语句，在可能的情况下尽量少的进行Insert、Update操作(在update上，我被恶批过)；
46、尽可能的使用PHP内部函数（但是我却为了找个PHP里面不存在的函数，浪费了本可以写出一个自定义函数的时间，经验问题啊！）；
47、循环内部不要声明变量，尤其是大变量：对象(这好像不只是PHP里面要注意的问题吧？)；
48、多维数组尽量不要循环嵌套赋值；
49、在可以用PHP内部字符串操作函数的情况下，不要用正则表达式；
50、foreach效率更高，尽量用foreach代替while和for循环；
51、用单引号替代双引号引用字符串；
52、“用i+=1代替i=i+1。符合c/c++的习惯，效率还高”；
53、对global变量，应该用完就unset()掉；
转载网络.
]]></description>
		<wfw:commentRss>http://www.blags.org/how-to-improve-the-efficiency-of-php-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
