2024年4月15日发(作者:)
长沙通信职业技术学院学撤
第11卷第2期
Journal of Changsha Telecommunications
VoI.1l N0.2
2012年6月
and Technology Vocational College
Jun.201 2
编写PHP高效代码的经验探讨
徐 杰
(广东邮电职业技术学院,广东广州510630)
【摘要】文章从理论与实践结合的角度论述编写高效的代码的方法途径,以及一些应用技巧。着重介绍了自 卜开发的内容
管理系统PHPArticle中使用的一些技巧、方法和实现细节
【关键词】php;高效代码;php技巧
Idol:10.3969 ̄.issn.1671—9581.2012.02.012]
【中图分类号]TP31 1.1 1 【文献标识码】A 【文章编号】167I-958 1(2012)02—0047—03
Exl Experi" ence 0n writin ̄ writing PHP fficientHJ e In t coa’es
XU Jie
(Guangdong Vocational College of Posts and Telecom,Guangzhou,Guangdong,China 5 1 0630)
Abstract:Combining theory with practice,this paper discusses the approaches to write about the efficient codes and some
application skills.It mainly introduces some techniques,methods and implementation details in the PHPArticle system which is an
independently-developed content management system.
Keywords:php;efifcient code;php skills
随着计算机网络特别是Interact的不断发展, 深度越大,效率随之越低。
对Web编程的需求越来越大,基于B/S结构的软
2)在程序中进行重复的、相同的、数据量比
件的应用也越来越广泛。PHP和大家所熟知的ASP
较大的字符操作。比如,查找、替换、保存等。
~
样,是一种服务器端、跨平台、HTML嵌入式的
3)过分地使用正则表达式。j 则表达式在字
脚本语言,常用于Web编程,运行于服务器端。
符处理上 以说用处非常强人,几乎_uJ‘以达到万能
PHP运行于服务器端,用它编写的程序属于服
的程度。但是,不是在任何时候、任何情况下使用
务器程序,也就是我们常说的动态网页程序,它的 都是好的。应该分清楚是否有需要为前提。就是
运行速度与效率,直接影响着网站的运作。那么如
为 则表达式功能的强人,使得它在效率上会相对
何编写高效的PHP代码呢?
于普通的字符处理函数效率低。就比如
l影响PHP软件运行速度的各种因素
preg_replace和str
_
replace,在两者都uJ。以使用的前
首先了解一下影响PHP软件运行速度的各种
提下,当然是使用str_replaee效率高了。
因素,这样才能够做到有针对性地避免PHP中使
4)void eval fstring code
_
str)函数的使用。
用耗时的代码。
eval()把code str中的字符串当作PHP代码解析
1)递归的使用。递归经常会使程序实现起来
执行。这个比直接写成PHP代码+HTML代码的形
比较简单。但是,效率上会相对降低。因为递归会
式效率低。比如代码:
对此的调用函数。在函数调用前,计算机会做一些
<?
初始化工作,这样就会耗费’‘些时间。如果递归的
¥str=”test”:
[收稿日期]2012-03—19
[作者简介]徐杰(1975一),女。广东广州人,广东邮电职业技术学院教师,硕士,研究方向:网络编程与通信
络。
47
长沙通信职业技术学院学报 第1 1卷
eval(‘‘echo\”\¥str\”’');
?>
function displayBook(¥book=Array(),
Sparentid=0)
{
tbreach(Sbook【Sparentid1 AS Skev
会比下面的效率低。
<?
Sstr=’’test”:
echo Sstr;
?>
=>¥subdata)
{
each Sdata;
比下面的效率更低。
displayBook(¥book, Ssubdata
直接输出HTML数据test
5)使用多余的PHP语句或变量。比如在PHP
.
中使用…些没有意义和效果的语句,在输出数据
时,总是先对数据进行缓冲,然后再输出。比如:
<?
//下面的数据缓冲是多余的,因为它
没有在其他地方调用这个数据。
//可以把“要输出的数据”直接写成
html代码,而不需要加入任何
//PHP的处理。这样的速度是最快的。
Sdata=”要输出的数据”:
echo¥data;
?>
6)还有PHP和数据库调用的问题。
知道了影响PHP效率的因素之后,要在编写
代码的时候,加以注意,养成好的习惯,这样高效
的PHP代码就写出来了。
2编写PHP程序时的几点经验
根据上面的六点,写PHP程序时,需要注意:
1)减少递归函数的使用。在一些确实很耗费
时间的递归处理里面,可以把递归转换成非递归方
式。比如最常见的层级结构的数据。
<?
Sdata【0】=Array(0=>Array(‘id’=>1,
‘
parentid’=>O
,
’data’=>’计算机图书’),
1=>Array(‘id’=>2,‘parentid’=>
0,’data’=>’教育图书’));
¥data
[1]=Array(0=>Array(‘id’=>3,‘parentid’
=>1,’data’=>’C++’)。
1=>Array(‘id’=>4,‘parentid’:>
1,’data’=>’VB’));
¥data[2]=Array(0=>Array(‘id’=>5,
‘
parentid’=>l,’data’=>’语文’),
1=>Array(‘id’=>6,‘parentid’=>
1,’data’=>’数学’);
48
[‘id’】);
)
}
displayBook(Sdata,0);
?>
其中数组Sdata中的元素的标号代表着它的上
级的id号。displayBook函数就是把层级关系的数
据从高到低逐级打印出来。 。以把Sdata数组进行
结构转换,按照层级关系写成顺序关系。比如:
¥data=Array(0=>Array(‘id’:>1,‘parentid’
=>0,’data’=>’计算机图l;’),
l=>Array(‘id’=>3,‘pal’entid’=>l,’
data’=>’C++’),
2=>Array(‘id’=>4, parentid’=>1,
data’:>’VB’));
然后冉输出,就’uj‘以避免了递归。
2)避免进行重复的、相 的、数据量比较人
的字符操作。如果是重复相同的操作,在第’’次操
作后,可以对数据操作的结果进行数据缓冲。缓冲
方式有文件缓冲方式和数据库缓冲方式(后面详细
介绍)。
3)在可以使用J下则或普通字符操作达到相
效果的情况下,则选择使用普通字符操作。如上面
提到的str__replace代替preg_replace。
4)避免使用无用的PHP语句,能够直接输出
的数据,则直接输出,不要添加没必要的PHP数
据保存。
还有数据库操作优化,适当的添加索引、避免
全文查找,或优化全文查找,优化SQL语句,提
高执行效率。
3提高PHP执行效率的技巧
上面提到的是… 些影响PHP运行效率的。些
凶素及其解决办法。下面介绍提高PHP执行效率
的一些技巧——数据缓冲。数据缓冲有文件缓冲和
数据库缓冲两种。
1)文件缓冲
第2期 编 PHP高效代码的经验探讨
文件缓冲,是把最终数据保存在文件罩面,让
程序直接读取文件的内容然后显示出来或者拿来使
用。比如现在的常见的静态页,是把动态PHP网
页访问后的结果数据保存在一个文件里面,在以后
的访问里,就不需要再访问这个PHP页面,而是
直接访问生成的缓冲文件。这样,在访问中,对服
务器来说,只是消耗了带宽,不需要消耗PHP的
执行时间,从而大大的提高了效率。不过这个方法
有个缺点,就是需要耗费比较大的磁盘空间。 ‘般
的实现方法是,把PHP执行后的数据,先不输出,
而是保存在一个变量里面,然后用读写文件的方
式,写到一个文件里面。PHP编译型模板也是对这
种技巧的一个很好的应用。
2)数据库缓冲
数据库缓冲,是把数据保存在数据库里面。这
些数据可能是从数据库获取,而且获取数据需要耗
费比较多的时间,数据内容是长时间不会改变,或
者这些数据会以各种方式在不同的地方调用,这样
就需要把这些数据作数据库缓冲。数据的形式可以
是字符串、数组。如果是数组,需要用serialize 0
函数转换成字符串,然后保存,提取数据的时候,
要用unserialize 0函数对其进行还原。
如www.phpartjcle.net开发的phpArticle v2.1.1
是提高PHP代码效率的一’个很成功的例子。而且
phparticlev2.1.1是开源的,可以阅读源代码来更好
地理解和掌握上面提到的方法。
4结束语
上面是做PHP开发时总结的 些经验和方法,
希望能够对人家有帮助。
碜考文胡
【U陆昌辉,熊帅,刘瑞涛.PHP WEB开发快速入rJ及实例精
选fM1.北京:电子工、 出版社,2008.
f21陈营辉.PHP网络编程从入门到精通fM1.北京:清华人
学出版社,2007.
『31冯祖洪. PHP访问Mysql数据库I'leJ77' ̄lJ].现代} 子
技术,2002,(6).
f4】付俊英.基 PHP的Web数击旨库 问 .计算机与信
息技术,2001,f91.
『51黄国辉.PHP聊天室技术 .汁算机与信息技术,2002,(8)
『61贾素来.使用PHP和MySQI 升发动态 站『J1.大众科技.
20l1,(3).
49
发布者:admin,转转请注明出处:http://www.yc00.com/news/1713120103a2186915.html
评论列表(0条)