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% 的性能。
php  性能优化的更多相关文章
- C#中那些[举手之劳]的性能优化
隔了很久没写东西了,主要是最近比较忙,更主要的是最近比较懒...... 其实这篇很早就想写了 工作和生活中经常可以看到一些程序猿,写代码的时候只关注代码的逻辑性,而不考虑运行效率 其实这对大多数程序猿 ...
- SQL Server SQL性能优化之--通过拆分SQL提高执行效率,以及性能高低背后的原因
复杂SQL拆分优化 拆分SQL是性能优化一种非常有效的方法之一, 具体就是将复杂的SQL按照一定的逻辑逐步分解成简单的SQL,借助临时表,最后执行一个等价的逻辑,已达到高效执行的目的 一直想写一遍通过 ...
- 数据库访问性能优化 Oracle
特别说明: 1. 本文只是面对数据库应用开发的程序员,不适合专业DBA,DBA在数据库性能优化方面需要了解更多的知识: 2. 本文许多示例及概念是基于Oracle数据库描述,对于其它关系型数据库也 ...
- JVM内存模型和性能优化 转
JVM内存模型和性能优化 JVM内存模型优点 内置基于内存的并发模型: 多线程机制 同步锁Synchronization 大量线程安全型库包支持 基于内存的并发机制,粒度灵活控制,灵活度高于 ...
- Hive性能优化
1.概述 继续<那些年使用Hive踩过的坑>一文中的剩余部分,本篇博客赘述了在工作中总结Hive的常用优化手段和在工作中使用Hive出现的问题.下面开始本篇文章的优化介绍. 2.介绍 首先 ...
- [转] Python 代码性能优化技巧
选择了脚本语言就要忍受其速度,这句话在某种程度上说明了 python 作为脚本的一个不足之处,那就是执行效率和性能不够理想,特别是在 performance 较差的机器上,因此有必要进行一定的代码优化 ...
- Python代码性能优化技巧
摘要:代码优化能够让程序运行更快,可以提高程序的执行效率等,对于一名软件开发人员来说,如何优化代码,从哪里入手进行优化?这些都是他们十分关心的问题.本文着重讲了如何优化Python代码,看完一定会让你 ...
- 【转】Android性能优化之布局优化篇
转自:http://blog.csdn.net/feiduclear_up/article/details/46670433 Android性能优化之布局优化篇 分类: andorid 开发2015 ...
- Python 代码性能优化技巧(转)
原文:Python 代码性能优化技巧 Python 代码优化常见技巧 代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构.优化. ...
随机推荐
- 14.4.6 Configuring Thread Concurrency for InnoDB 配置Thread 并发
14.4.6 Configuring Thread Concurrency for InnoDB 配置Thread 并发 InnoDB 使用操作系统threads 来处理用户的事务请求.(事务可以执行 ...
- 祝贺自己itpub和csdn双双荣获专家博客标题
这是业界难以得到认同内的技能,记录下来.油...所有的钱,明天会更好.
- php中如何开启GD库
php中开启GD库 在浏览器输入启用wamp下的GD库(否则验证码可能不能用) D:\lamp\php\php.ini 文件
- 24位和8位BMP图片保存纯C代码
BMP图片大家都知道,可以通过查看BMP图片结构使用纯C就可以打开,编辑,处理,保存图片.非常方便使用. 具体BMP结构可以参考:wingdi.h头文件.今天主要在进行删减代码,需要把多余的代码删除, ...
- [C++]C++中的运行时类型检测
Date:2014-1-3 Summary: 使用C++中的运行时类型检测.(文章重点在于记录本人的使用情况,并非深层讨论RTTI) Contents:写习惯C#的我,在C++依然存在哪些.NET的惯 ...
- junit测试时,出现java.lang.IllegalStateException: Failed to load ApplicationContext
课程设计要求进行junit测试,我是在已经做好的ssh项目上做的测试,测试类代码如下 package com.zhang.web.services; import static org.junit.A ...
- 2014最新SSH框架面试题大收集
(1)Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transati ...
- HDU 3613 Best Reward 正反两次扩展KMP
题目来源:HDU 3613 Best Reward 题意:每一个字母相应一个权值 将给你的字符串分成两部分 假设一部分是回文 这部分的值就是每一个字母的权值之和 求一种分法使得2部分的和最大 思路:考 ...
- PhantomJS是一个基于WebKit的服务器端JavaScript API
PhantomJS是一个基于WebKit的服务器端JavaScript API,它基于 BSD开源协议发布.PhantomJS无需浏览器的支持即可实现对Web的支持,且原生支持各种Web标准,如DOM ...
- HDU 3217 Health(状压DP)
Problem Description Unfortunately YY gets ill, but he does not want to go to hospital. His girlfrien ...