php  性能优化

基础优化

1 不要随便复制变量。

有时候为了使 PHP 代码更加整洁,一些 PHP 新手(包含我)会把提前定义好的变量拷贝到一个名字更简短的变量中,事实上这样做的结果是添加了一倍的内存消耗,仅仅会使程序更加慢。试想一下,在以下的样例中,假设用户恶意插入 512KB 字节的文字到文本输入框中,这样就会导致 1MB 的内存被消耗!

BAD:

$description = $_POST['description'];
echo $description;

GOOD:

echo $_POST['description'];

2. 对字符串使用单引號

PHP 引擎同意使用单引號和双引號来封装字符串变量,可是这个是有非常大的区别的!使用双引號的字符串告诉 PHP 引擎首先去读取字符串内容,查找当中的变量,并改为变量相应的值。一般来说字符串是没有变量的,所以使用双引號会导致性能不佳。最好是使用字符串连接而不是双引號字符串。

BAD:

$output = "This is a plain string";

GOOD:

$output = 'This is a plain string';

BAD:

$type = "mixed";
$output = "This is a $type string";

GOOD:

$type = 'mixed';
$output = 'This is a ' . $type .' string';

3. 使用 echo 函数来输出字符串 

使用 echo() 函数来打印结果出了有更easy阅读之外,在下个样例中,你还能够看到有更好的性能。由于print是函数,而echo是php的内置语法

BAD:

print($myVariable);

GOOD:

echo $myVariable;

4. 不要在 echo 中使用连接符

非常多 PHP 程序猿(有包含我)不知道在用 echo 输出多个变量的时候,事实上能够使用逗号来分开的,而不必用字符串先把他们先连起来,如以下的第一个样例中,由于使用了连接符就会有性能问题,由于这样就会须要 PHP 引擎首先把全部的变量连接起来,然后在输出,而在第二个样例中,PHP 引擎就会依照循序输出他们。

BAD:

echo 'Hello, my name is' . $firstName . $lastName . ' and I live in ' . $city;

GOOD:

echo 'Hello, my name is' , $firstName , $lastName , ' and I live in ' , $city;

5. 使用 switch/case 取代 if/else

对于仅仅有单个变量的推断,使用 switch/case 语句而不是 if/else 语句,会有更好的性能,而且代码更加easy阅读和维护。

6 “用i+=1取代i=i+1。符合c/c++的习惯,效率还高”;

php.ini 參数优化

1 PHP脚本运行时间 max_execution_time = 30

该选项设定PHP程序的最大运行时间,假设一个PHP脚本被请求,且该PHP脚本在max_execution_time时间内没能运行完成,则PHP不再继续运行,直接给client返回超时错误。没有特殊须要该选项可保持默认设置30秒,假设您的PHP脚本确实须要长运行时间则能够适当增大该时间设置。 


2 PHP脚本处理内存占用  memory_limit = 128M

该选项指定PHP脚本处理所能占用的最大内存,默觉得128MB,假设您的server内存为1GB以上,则该选项能够设置大一些(只是貌似没什么意义,一条)

3 PHP全局函数声明找到:register_globals = Off

当 register_globals 打开以后,各种变量都被注入代码,比如来自 HTML 表单的请求变量。再加上 PHP 在使用变量之前是无需进行初始化的,这就使得更easy写出不安全的代码。比如 www.test.com/index.php?abc=test 假设打开该设置的话能够直接在php文件里用$abc试用改值

4



高级性能优化

1 php 编译缓存APC

PHP 脚本假设不做缓冲,每次调用都须要编译,因此,安装一个 PHP 缓冲产品能提升 25-100% 的性能。

















posted @ 2014-09-22 10:02  mfrbuaa  阅读(257)  评论(0编辑  收藏  举报