PHP性能如何实现全面优化?

性能是网站运行是否良好的关键因素, 网站的性能与效率影响着公司的运营成本及长远发展,编写出高质高效的代码是我们每个开发人员必备的素质,也是我们良好的职业素养。

如何优化PHP性能呢?

一、变量(重要)

1)、 变量大小,注意变量大小是节约内存的最有效手段,对于来自用户表单、数据库和文件缓存的数据都需要控制变量的大小。 因为cpu要处理的数据是来源于内存
       2)、 变量有效期,使用unset()函数注销不需要的变量是一种良好的习惯,将一些不需要的变量立即注销可提高内存的使用率。
       3)、 复制变量,尽量不要复制变量,否则就会带来1倍的内存消耗,即使复制变量也应该要立即注销原有变量。
       4)、 变量类型,初始化变量请注意其变量类型,一个变量在执行过程中最好只有一种类型状态。对于数组变量,请初始化声明,如下: $a = array();
       5)、 临时变量,是处理业务逻辑的临时存储,这些都是需要消耗内存的。如果临时变量使用结束请立即注销,特别是在一些过程式代码的执行流程中,对于一些函数,如果业务非常复杂,同样需要立即注销临时变量
       6)、 静态变量,对于一些需要由复杂业务产生的变量,如果在程序的执行过程中多次产生并使用,可考虑使用静态变量,减少程序的cpu执行次数
       7)、 变量的性能:局部变量>全局变量>类属性>未定义的变量。

二、循环(重要)

1)、 尽量减少循环的次数。
       2)、 尽量减少循环的潜逃的层次,不要超过三层。
       3)、 避免在循环内有过多的业务逻辑。
       4)、 不要循环包含文件
       5)、 不要循环执行数据库操作。
       6)、 优先使用foreach,它比for/while效率高
       7)、 不要把 count/strlen/sizeof 放到 for 循环的条件语句中 For($i=0,$count=count($array);$i<$count;$i++){} 不要使用for($i=0;$i<count($array);$i++){};
       8)、 for($i=$total;$i>0;$i–){}性能好于for($i=0;$i<$total;$–){}
       9)、 保持循环体内的业务逻辑清晰

三、 函数(重要)

1)、 函数职责清晰,一个函数只干一件事,不要杂揉过多的业务逻辑
      2)、 函数代码体不要超过20行,反之,考虑拆分。
      3)、 优先使用php内置函数
      4)、 常量与函数同时能干一件事,优先使用常量。
               例如:
                  · phpversion() < PHP_VERSION
                  · get_class() < __CLASS__
                  · is_null() < NULL ===
      5)、 echo 的性能好于print,输入多个变量的时候用echo $str,$str1,不用.连接符
      6)、 $_SERVER[REQUEST_TIME]替换time();
      7)、 字符串替换strtr()->str_replace()->preg_replace()->epreg();
      8)、 发挥trim最大功效,替换substr。$filepath=trim($filename,’/’).’/’;
      9)、Isset/empty 虽然两个函数功能有所差异,但在同样的情况下推荐使用 empty()
    10)、isfile/file_exist 两个函数的功能有所不同,file_exist既可判断文件是否存在,也可以判断目录是否存在,在同样的情况下推荐使用is_file

四、文件(重要)

1)、 减少文件包含数,减少磁盘 IO
       2)、 使用完整路径,或者容易转换的相对路径。避免在 include_path 查找
       3)、 文件的代码行数不要超过 2000 行
       4)、Require_once/include_once 效率低于 require/include, 需要额外的去查看系统是否已经调用过这个文件. 因为它们在一个 opcode 缓存下的调用非常慢
       5)、程序执行文件用 requie/require_once,缓存文件用include/include_once。Include 效率好于 require
       6)、优化 spl 中的文件自动加载机制,可参靠 yii
       7)、类库文件加载,是否考虑类是否已经实例化,可考虑采用设计模式之单例模式
       8)、文件读写的并发性

五、面向对象(重要)

1)、 控制实例的创建的数量
       2)、 优先使用常量、类常量
       3)、 优先例用静态变量,静态属性
       4)、 类的结构合理
       5)、 面象接口编程
       6)、 封装变化点
       7)、 依赖于抽象,不依赖于细节
       8)、 优先使用静态成员
       9)、 类的接口清晰稳定,类的职责单一,类与类的通信合理
     10)、 使用常量的好处 编译时解析,没有额外开销 杂凑表更小,所以内部查找更快 类常量仅存在于特定「命名空间」,所以杂凑名更短 代码更干净,使除错更方便

六、字符串

1)、 用单引号替代双引号引用字符串;避免检索字符串中的变量

七、运算

1)、 用 i+=1 代替i=i+1。符合c/c++的习惯,效率还高
       2)、 ++$i 的效率高于$i++,–$i 同理[/hide]

八、数组

1)、 多维数组尽量不要循环嵌套赋值;
      2)、 使用$array[‘name’]方式访问数组,禁止$array[name]/$array[“name”]

九、判断(重要)

1)、 逻辑判断请优先使用switch 的方式,对于业务逻辑相对较多的情况请选择if/else,提高代码的可读性
     2)、 尽量控制if/else判断的个数,如果太多请考虑功能优化或代码优化
     3)、 尽量使用恒等用于比较判断,恒等的效率高于等于,而且还能避免一些类型强制转换的错误
     4)、 if/else与_&&,单条语句判断请选择&&的形式, &&的效率高于if/else,如下 :
                if ($a == 1) {
                    $b = 2;
                 }
               可选择为($a == 1) && $b = 2;

十、缓存

1)、 使用php加速器,缓冲opcode
      2)、 例用memcache/nosql
      3)、 使用内存数据库、
      4)、 使用文件缓存
      5)、 缓冲功能

十一、其它

1)、 少用@符号,严重影响性能
     2)、 适时关闭远程资源连接如数据库,ftp、socket等,适时的清理这些资源

十二、 数据库优化(重要)

1)、 合理的商业需情
     2)、 数据库 schema 架构优化
     3)、 垂直与水平分库分表
     4)、 索引优化,查询优化
     5)、 第三方开源检索工具(sphinx)
     6)、 主从数据库服务器的使用。
     详情可查看传智PHP公开视频《大型网站优化核心技术-mysql》

十三、 前端优化

1)、合理的 html 结构
     2)、合理 html 与css 的同时,考虑 Css 设计合理,减少 http 请求
     3)、合理 html 与java script 的同时,考虑拆分是否合理,减少 http 请求
     4)、优化 java script 代码,让用户有良好的体验
     5)、根据 http 协议,优化高并发请求

十四、性能检测工具(重要)

只要在百度上搜索“xxx如何检网站性能”即可。
     1)、Web Server
     2)、ab
     3)、http_load
     4)、PHP
     5)、apd
     6)、xdebug
     7)、Mysql
     8)、explain
     9)、profiler

此文章转载至传智播客:http://bbs.itcast.cn/thread-82934-1-1.html?xhw

时间: 2024-08-25 14:54:58

PHP性能如何实现全面优化?的相关文章

性能诊断与SQL优化

AUTOTRACE 功能辅助SQL优化 安装, 参考PL/SQL环境设置博文 autotrace 常用选项: set autotrace off, 不生成autotrace 报告, 这是缺省值 set autotrace on explain: autotrace 只显示优化器执行路径报告 set autotrace on statistics: 只显示执行统计信息 set autotrace on: 即包含统计信息, 又包含执行计划 set autotrace traceonly: 同set

提高性能:用RequireJS优化Wijmo Web页面

上周Wijmo 2014 V2版本刚刚发布(下载地址),  有网友下载后发现仅仅使用了40个Widgets的一小部分,还需要加载全部的jquery.wijmo-pro.all.3.20142.45.min.js包? 即对仅使用部分的Widget,有无办法优化而提高网络性能呢. 答案是肯定的,有办法. 其中针对这种情况,使用Require.JS再合适不过了,实际上Wijmo 2013年已经开始支持Require.JS了,如下是Wijmo支持的JavaScript类库的全图. 本文就通过对比的方式说

主从同步、读写分离、mysql性能调优(软优化)

配置mysql主从同步1 主从同步的作用:让slave身份的数据库服务器自动同步 master身份的数据库服务器上的数据. 一.主数据库服务器的配置192.168.4.121 用户授权mysql> grant replication slave on *.* to [email protected]"192.168.4.11" identified by "123456";2 启用binlog日志vim /etc/my.cnf[mysqld]server_id

大型php网站性能和并发访问优化方案

网站性能优化对于大型网站来说非常重要,一个网站的访问打开速度影响着用户体验度,网站访问速度慢会造成高跳出率,小网站很好解决,那对于大型网站由于栏目多,图片和图像都比较庞大,那该怎么进行整体性能优化呢?本文为你提供一份大型php网站性能和并发访问优化方案. 一.大型网站性能提高策略: 大型网站,比如门户网站,在面对大量用户访问.高并发请求方面,基本的解决方案集中在这样几个环节:使用高性能的服务器.高性能的数据库.高效率的编程语言.还有高性能的Web容器.这几个解决思路在一定程度上意味着更大的投入.

关于redis性能问题分析和优化

一.如何查看Redis性能 info命令输出的数据可分为10个分类,分别是: server,clients,memory,persistence,stats,replication,cpu,commandstats,cluster,keyspace 为了快速定位并解决性能问题,这里选择5个关键性的数据指标,它包含了大多数人在使用Redis上会经常碰到的性能问题 二.内存 上图中used_memory 字段数据表示的是:由Redis分配器分配的内存总量,以字节(byte)为单位. 其中used_m

CSS性能分析,如何优化CSS提高性能

css匹配原理 在优化css之前我们需要了解下css是怎么进行工作的,我们都知道css是由选择器,属性和属性值构成的. 我们可能会这样写上一行代码 //css .con .loulan1 p span{ display: block; } //html<div class="con">     <div class="loulan">         <p><span>文字</span></p>

Yahoo Web 应用性能及linux内核优化黄金法则详解

Web 应用性能优化黄金法则:先优化前端程序(front-end) 的性能,因为这是80% 或以上的最终用户响应时间的花费所在. 法则1. 减少HTTP 请求次数80%的最终用户响应时间花在前端程序上,而其大部分时间则花在各种页面元素,如图像.样式表.脚本和Flash等,的下载上.减少页面元素将会减少HTTP请求次数.这是快速显示页面的关键所在.一种减少页面元素个数的方法是简化页面设计.但是否存在其他方式,能做到既有丰富内容,又能获得快速响应时间呢?以下是这样一些技术:Image maps 组合

Web页面加载,如何分析页面性能?如何进行优化?

一.浏览器加载过程:1.建立连接过程 (1) 浏览器查找域名的IP地址 (2) 浏览器给web服务器发送一个HTTP请求 (3) 服务器发送永久重定向响应 (4) 浏览器跟踪重定向地址 (5) 服务器"处理"请求 (6) 服务器发回一个HTML响应2.浏览器渲染 解析HTML ↓构建DOM树 ↓渲染树构建 ↓渲染树布局 ↓绘制渲染树二.优化方法1.启用浏览器缓存 浏览器要根据域名找出IP地址,而DNS查找过程的第一步是在浏览器缓存中查找,根据Chrome的PageSpeed给出的建议:

简述tcp协议对http性能的影响及优化

当网站服务器并发连接达到一定程度时,你可能需要考虑服务器系统中tcp协议设置对http服务器的影响. tcp相关延时主要包括: 1.tcp连接时建立握手: 2.tcp慢启动拥塞控制: 3.数据聚集的Nagle算法: 4.用于捎带确认的tcp延迟确认算法: 5.TIME_WAIT时延和端口耗尽. 对上面的延时影响,相应的优化方法有: 1.http使用“持久化连接”,http 1.0中使用connection:keep-alive, http 1.1默认使用持久化连接: 2.调整或禁止延迟确认算法(

网站性能的影响因素与优化方法(阅读笔记)

原文: http://www.cnblogs.com/leefreeman/p/3998757.html 另: http://www.cnblogs.com/leefreeman/p/3585032.html 怎样编写高质量的java代码 1. dns解析速度 2. 网络连接速度(不同地区IDC, 不同网络间使用代理, 主要地区使用CDN) 在各运营商发达的地区的IDC(互联网数据中心,可以理解成机房)部署网站服务器,各运营商的用户即可通过各自的骨干网访问服务器. 购买代理服务,也就是原来联通用