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
操作
尊贵的董事大人
英文标题不为空时 视为本栏投稿
需要关键字 描述 英文标题