PHP语言以其简单易学而闻名,但一些初学者经常会写出一些性能低下的PHP代码,这会严重影响整套系统的运行效率,本文我们为大家收集了一些PHP 编程技巧与优化,希望PHP初学者能认真阅读以下的编辑技巧,并养成良好的PHP编程习惯!
63条PHP编程技巧
- 1、 尽量采用大量的PHP内置函数。
-
2、 使用
echo
代替print
,并且使用echo
的多重参数(译注:指用逗号而不是句点)代替字符串连接,比如
echo $str1,$str2;
for
循环之前确定最大循环数,不要每循环一次都计算最大值。$row['id']
的效率是$row[id]
的7倍。$_SERVER['REQUEST_TIME']
要好于time()
。str_replace
函数比preg_replace
函数快,但strtr
函数的效率是str_replace
函数的四倍。switch case
)好于使用多个if,else if
语句。for ($x=0; $x < count($array); $x)
每循环一次都会调用count()函数。$this->prop++
)要比递增一个局部变量慢3倍。echo
输出多个字符串时,用逗号代替句点来分隔字符串,速度更快。strlen()
函数。此函数执行起来相当快,因为它不做任何计算,只返回在zval 结构(C的内置数据结构,用于存储PHP变量)中存储的已知字符串长度。但是,由于strlen()
是函数,多多少少会有些慢,因为函数调用会经过诸多步骤,如字母小写化(译注:指函数名小写化,PHP不区分函数名大小写)、哈希查找,会跟随被调用的函数一起执行。在某些情况下,你可以使用isset()
技巧加速执行你的代码。
if (strlen($foo) < 5) { echo "Foo is too short"; } if (!isset($foo{5})) { echo "Foo is too short"; }
static
,就尽量定义成static
,它的速度会提升将近4倍。array_key_exists
,用isset
来判断键值是否在数组中存在__set,__get
等魔术方法include/require
代替include_once/require_once
,且尽量使用绝对路径count/strlen/sizeof
等放到for
循环的条件语句中foreach
代替for/while
echo "hi, $name, nice to meet you";
fread
,读取大文件使用file_get_contents
,特大的文件使用fseek
ip2long()
和 long2ip()
函数来把 IP 地址转化成整型存储,可以使计算一个特定的地址是不是在一个区段内更简单,而且加快了搜索和排序的速度checkdnsrr()
函数验证域名是否存在,这个内置函数能够确认指定的域名能够解析成 IP 地址mysql_*
系列函数改用改进版的 mysqli_*
系列函数highlight_file()
来自动的打印出格式化的很漂亮的源代码error_reporting(0)
函数来防止用户看到潜在的敏感错误信息。在理想情况下,发布服务器应该在 php.ini
里完全禁止。但是如果你用的是一个共享的 web 服务器的话,你没有自己的 php、ini 文件,那么这种情况下你最好的选择就是在所有脚本的第一行前加上 error_reporting(0)
gzcompress()
和 gzuncompress()
来显式的压缩/解压字符串
magic_quotes
设置为On,使用mysql_real_escape_string()
函数转义
htmlentities()
或 htmlspecialchars()
先进行转义$i
的递增或递减时,$i++
会比++$i
慢一些。这种差异是PHP特有的,并不适用于其他语言,所以请不要修改你的C或Java代码并指望它们能立即变快,没用的。++$i
更快是因为它只需要3条指令(opcodes),$i++
则需要4条指令。后置递增实际上会产生一个临时变量,这个临时变量随后被递增。而前置递增直接在原值上递增
Select SQL
语句,在可能的情况下尽量少的进行Insert、Update
操作
点我分享笔记