PHP项目性能优化

标签: php 性能优化 | 发表时间:2015-01-21 12:20 | 作者:luxixing
出处:http://segmentfault.com/blogs

PHP项目性能优化的三个层次

  • PHP语言层级
  • PHP周边(服务器,数据库,webserver)
  • PHP底层

语言层级

  • 尽量使用PHP原生函数和常量,类
    如果要实现的功能有原生PHP函数,则不要自己用PHP实现
  • 尽量使用性能更高的内置函数
    比如isset和array_key_exists都可以使用,则使用isset
  • 尽量不要使用错误抑制符@
  • 不要使用PHP处理cpu密集的业务,交给适合的语言去处理
  • 减少io操作,比如在一次请求中要生成多条日志,则尽量缓存一次写入
  • 代码尽量向上兼容,即尽可能的使用PHP最新版本,比如generaotr实现的range等,数组短语法

周边(展开则相当庞大了)

  • Linux内核优化,硬件提升(ssd硬盘,加内存)
  • 减少跨网络请求
  • MySQL 索引使用,NoSQL+MySQL的配合使用,MySQL主从等
  • Nginx 的配置优化
  • PHP-FPM配置优化
  • 使用PHP的最新版本,目前PHP 5.6,今年即将会来的PHPNG(PHP7)
  • 使用xhprof分析项目源码,找出瓶颈进行优化

这部分内容需要继续学习研究

PHP底层

  • 使用opcode扩展 缓存PHP的opcode代码,减少PHP的编译过程
  • CPU密集或者复杂功能使用PHP的pecl扩展(swoole等优秀扩展的使用)
  • HHVM,百度再用,不过还是让我们坐等PHPNG的问世,有PHPNG,HHVM就不是必须的选择了

当然良好的编码风格(目前PSR很流行 http://www.php-fig.org/),优雅的代码实现也非常重要
写代码,不要仅仅为了实现目的和功能,还要有诗人的情怀,尽量打磨代码,精炼,如贾岛之推敲,追求自己代码的卓越

随着项目的发展,就会有架构方面的变更,来应对更大的并发和请求

相关 [php 项目 性能优化] 推荐:

PHP项目性能优化

- - SegmentFault 最新的文章
PHP项目性能优化的三个层次. PHP周边(服务器,数据库,webserver). 尽量使用PHP原生函数和常量,类. 如果要实现的功能有原生PHP函数,则不要自己用PHP实现. 尽量使用性能更高的内置函数. 比如isset和array_key_exists都可以使用,则使用isset. 尽量不要使用错误抑制符@.

项目性能优化经验--ZY(三)

- - 行业应用 - ITeye博客
读写分离,不是想做就做的,说分就分的,随便找个中间件把请求一转发就OK的. 比如,在项目中有个模块是购物车(现在的电子商务一般都需要存储购物车内容,因为存在PC,MOBILE等不同的终端),客户先点击添加购物车,然后结算(这时候会做个判断购物车是否有商品),在大并发情况下,mysql的读库和写库的同步(beanlog)严重的delay,导致购物车一直判断为空,订单无法下.

项目性能优化经验--ZY(二)

- - 行业应用 - ITeye博客
项目中,用了很多的LAZY级联,在页面用到的时候再去load,这样就使用Open Session In View的功能,在大并发且网络不好的情况下,会导致session迟迟不能释放(session要等页面request请求完全结束之后才close),即connection也没法释放. 之前项目都是使用EAGER,JSON数据传递的方式来处理,整个连接池太小不过100就能顶住1000+的并发下单.

项目性能优化经验--ZY项目

- - 行业应用 - ITeye博客
最近负责给公司某个ZY项目进行性能优化的一些经验分析. 压力测试到100并发,任何一个场景CPU暴高,接近100%. 查询jstack日志,发现大部分的线程block在tomcat 的 http11.connect 的poll方法上 或者是c3p0连接池的获取上. 同时发现该项目数据库连接池配置了2000+,仍然不够用,100并发.

MySQL性能优化

- sun - IT程序员面试网
在笔试面试中,尤其是像百度,淘宝这些数据量非常大,而且用LAMP架构的公司,数据库优化方面就显得特别重要了. 此外,除了数据库索引之外,在LAMP结果如此流行的今天,数据库(尤其是MySQL)性能优化也是海量数据处理的一个热点. 下面就结合自己的经验,聊一聊MySQL数据库优化的几个方面. 首先,在数据库设计的时候,要能够充分的利用索引带来的性能提升,至于如何建立索引,建立什么样的索引,在哪些字段上建立索引,上面已经讲的很清楚了,这里不在赘述.

Hebernate 性能优化

- - 企业架构 - ITeye博客
文章分为十三个小块儿对Hibernate性能优化技巧进行总结性分析,分析如下:. 一、在处理大数据量时,会有大量的数据缓冲保存在Session的一级缓存中,这缓存大太时会严重显示性能,所以在使用Hibernate处理大数 据量的,可以使用session. clear()或者session. evict(Object) 在处理过程中,清除全部的缓存或者清除某个对象.

Hbase 性能优化

- - CSDN博客云计算推荐文章
因 官方Book Performance Tuning部分章节没有按配置项进行索引,不能达到快速查阅的效果. 所以我以配置项驱动,重新整理了原文,并补充一些自己的理解,如有错误,欢迎指正. 默认值:3分钟(180000ms). 说明:RegionServer与Zookeeper间的连接超时时间.

JavaScript性能优化

- - ITeye博客
互联网泡沫让投资者长了记性:态度更加谨慎.         如今主流浏览器都在比拼JavaScript引擎的执行速度,但最终都会达到一个理论极限,即无限接近编译后程序执行速度. 这种情况下决定程序速度的另一个重要因素就是代码本身. 在这里我们会分门别类的介绍JavaScript性能优化的技巧,并提供相应的测试用例,供大家在自己使用的浏览器上验证, 同时会对特定的JavaScript背景知识做一定的介绍.

Mysql性能优化

- - 数据库 - ITeye博客
MySQL性能优化.   性能优化是通过某些有效的方法来提高MySQL的运行速度,减少占用的磁盘空间. 性能优化包含很多方面,例如优化查询速度,优化更新速度和优化MySQL服务器等.   数据库管理人员可以使用SHOW STATUS语句来查询MySQL数据库的性能. 语法:SHOW STATUE LIKE ‘value’;其中value参数是常用的几个统计参数.

Linux 性能优化

- - Gsion's Blog
1) Linux Proc文件系统,通过对Proc文件系统进行调整,达到性能优化的目的. 2) Linux性能诊断工具,介绍如何使用Linux自带的诊断工具进行性能诊断. 加粗斜体表示可以直接运行的命令. 二、/proc/sys/kernel/优化. 该文件有一个二进制值,该值控制系统在接收到ctrl+alt+delete按键组合时如何反应.