基础优化

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% 的性能。

php  性能优化的更多相关文章

  1. C#中那些[举手之劳]的性能优化

    隔了很久没写东西了,主要是最近比较忙,更主要的是最近比较懒...... 其实这篇很早就想写了 工作和生活中经常可以看到一些程序猿,写代码的时候只关注代码的逻辑性,而不考虑运行效率 其实这对大多数程序猿 ...

  2. SQL Server SQL性能优化之--通过拆分SQL提高执行效率,以及性能高低背后的原因

    复杂SQL拆分优化 拆分SQL是性能优化一种非常有效的方法之一, 具体就是将复杂的SQL按照一定的逻辑逐步分解成简单的SQL,借助临时表,最后执行一个等价的逻辑,已达到高效执行的目的 一直想写一遍通过 ...

  3. 数据库访问性能优化 Oracle

    特别说明: 1.  本文只是面对数据库应用开发的程序员,不适合专业DBA,DBA在数据库性能优化方面需要了解更多的知识: 2.  本文许多示例及概念是基于Oracle数据库描述,对于其它关系型数据库也 ...

  4. JVM内存模型和性能优化 转

    JVM内存模型和性能优化 JVM内存模型优点 内置基于内存的并发模型:      多线程机制 同步锁Synchronization 大量线程安全型库包支持 基于内存的并发机制,粒度灵活控制,灵活度高于 ...

  5. Hive性能优化

    1.概述 继续<那些年使用Hive踩过的坑>一文中的剩余部分,本篇博客赘述了在工作中总结Hive的常用优化手段和在工作中使用Hive出现的问题.下面开始本篇文章的优化介绍. 2.介绍 首先 ...

  6. [转] Python 代码性能优化技巧

    选择了脚本语言就要忍受其速度,这句话在某种程度上说明了 python 作为脚本的一个不足之处,那就是执行效率和性能不够理想,特别是在 performance 较差的机器上,因此有必要进行一定的代码优化 ...

  7. Python代码性能优化技巧

    摘要:代码优化能够让程序运行更快,可以提高程序的执行效率等,对于一名软件开发人员来说,如何优化代码,从哪里入手进行优化?这些都是他们十分关心的问题.本文着重讲了如何优化Python代码,看完一定会让你 ...

  8. 【转】Android性能优化之布局优化篇

     转自:http://blog.csdn.net/feiduclear_up/article/details/46670433 Android性能优化之布局优化篇 分类: andorid 开发2015 ...

  9. Python 代码性能优化技巧(转)

    原文:Python 代码性能优化技巧 Python 代码优化常见技巧 代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构.优化. ...

随机推荐

  1. Swift - 操作表(UIActionSheel)的用法,也叫底部警告框

    1,下面创建一个操作表(或叫底部警告框)并弹出显示 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 class ViewController: UIViewC ...

  2. javascript学习初衷

    很久没有过来写东西了,由于要做小网页,介于不懂javascript,一味的去爬其他站点的代码下来,却不能自由组合,控制,达到自己想要的效果, 于是只能沉下心,javascript从头学起,还记得张老师 ...

  3. 14.4.3.6 Fine-tuning InnoDB Buffer Pool Flushing 微调 InnoDB Buffer Pool 刷新:

    14.4.3.6 Fine-tuning InnoDB Buffer Pool Flushing 微调 InnoDB Buffer Pool 刷新: innodb_flush_neighbors an ...

  4. java 显示目录下全部文件

    package gao.org; import java.awt.HeadlessException; import java.io.File; import javax.swing.JFileCho ...

  5. 以对象管理资源——C++智能指针auto_ptr简介

    auto_ptr是C++标准库提供的类模板,它可以帮助程序员自动管理用new表达式动态分配的单个对象.auto_ptr对象被初始化为指向由new表达式创建的对象,当auto_ptr对象的生命期结束时, ...

  6. EasyUI初体验--右键弹框

    在C/S中可能非常easy实现右键弹框,但在B/S中直到今天我才搞定,小小得瑟一下.只一个html页面,导入相关的Easy-UI类库就能搞定,Easy-UI类库下载地址 <!DOCTYPE ht ...

  7. MVC之国际化

    MVC之国际化 前言 在项目中遇到国际化语言的问题是常有的事情,之前在做关于MVC国际化语言时,刚开始打算全部利用AngularJS来实现,但是渐渐发现对于页面Title难以去控制其语言转换,于是对于 ...

  8. AWS(0) - Amazon Web Services

    Computer EC2 – Virtual Servers in the Cloud EC2 Container Service – Run and Manage Docker Containers ...

  9. contiki etimer部分

    1.前言     contiki是一款小型开源,易于移植的多任务操作系统,专门为无线传感网设计,适合内存受限制的网络系统.国内的研究和应用还处于初级阶段,甚至还不知道这个contiki如何发音,也没有 ...

  10. poj3678(two-sat)

    传送门:Katu Puzzl 题意:n个点,点的取值可以是0或者1.m条边,有权值,有运算方式(并,或,异或),要求和这条边相连的两个点经过边上的运算后的结果是边的权值.问你有没有可能把每个点赋值满足 ...