转:关于PHP性能优化
原文来自于:http://www.cnblogs.com/qq78292959/archive/2012/12/28/2837272.html
1、升级硬件的一般规则:对于 PHP 脚本而言,主要的瓶颈是 CPU ,对于静态页面而言,瓶颈是内存和网络。一台 400 Mhz 的普通奔腾机器所下载的静态页面就能让 T3 专线(45Mbps)饱和。
2、Apache 处理 PHP 脚本的速度要比静态页面慢 2-10 倍,因此尽量采用多的静态页面,少的脚本。
3、PHP 脚本如果不做缓冲,每次调用都需要编译,因此,安装一个 PHP 缓冲产品能提升 25-100% 的性能。
4、把基于文件的会话切换到基于共享内存的会话。编译 PHP 时采用 --with-mm 选项,在 php.ini 中设置 setsession.save_handler=mm 。这个简单的修改能让会话管理时间缩短一半。
5、另外一项缓冲技术是把不常修改的 PHP 页面采用 HTML 缓冲输出。
6、如果你采用了 Linux 系统,建议升级内核到 2.6.0以上(现在最新版本为2.6.10)并开启抢占式内核支持,因为静态页面由内核服务。
7、采用最新版本的 Apache ,并把 PHP 编译其中,或者采用 DSO 模式,尽量不要采用 CGI 方式。
8、采用输出缓冲(请参考ob_start),如果你的代码有很多的 print 和 echo 语句,能提速 5-15% 。
9、不要在 Web 服务器上运行 X-Windows ,关掉没有必要运行的进程,如果已经安装了X-windows,请使用 init 3退出。
10、如果能够用文本就不要用图像,尽量减小图片的尺寸。
11、分散负载,把数据库服务器放到另外的机器上去。采用另外低端的机器服务图片和 HTML 页面,如果所有的静态页面在另外一台服务器上处理,可以设置 httpd.conf 中的 KeepAlives 为 off ,来减少断开连接的时间。
12、采用 hdparm 来优化磁盘,一般能提升 IDE 磁盘读写性能 200%,但是对 SCSI 硬盘没有效果。
13、修改 httpd.conf :
# 关闭 DNS lookups,PHP 脚本只拿 IP 地址
HostnameLookups off
# 关闭 htaccess 检测
AllowOverride none
打开 FollowSymLinks ,关闭 SymLinksIfOwnerMatch 以防 lstat() 系统调用:
Options FollowSymLinks
#Options SymLinksIfOwnerMatch
下面还有很多关于 httpd.conf 参数的调整。
14、Kurt 简洁而完整的 Apache Tuning Tips。
15、如果喜欢从修改 Apache 源码入手,可以安装 lingerd。在页面产生和发送后,每个 Apache 进程都会浪费一段时光在客户连接上,Lingerd 能接管这项工作,让 Apache 迅速服务下一个客户请求。
16、如果网络拥挤,CPU 资源不够用,采用 PHP 的 HTML 压缩功能:
output_handler = ob_gzhandler
PHP 4.0.4 及以前的用户请不要使用,因为存在内存泄漏问题。
17、修改 httpd.conf 中的 SendBufferSize 为你最大的页面文件的大小。加大内核的 TCP/IP 写缓冲大小。
18、另外一篇文章:Tuning Apache Web Servers for Speed,一篇 97 年的很古老的文章。
19、采用数据库的持久连接时,不要把 MaxRequestsPerChild 设置得太大。
20、Caching Tutorial for Web Authors and Webmasters教你怎样实现浏览器缓冲。
21、如果你足够勇敢的话,还可以采用 Silicon Graphics 的 Accelerated Apache补丁。这个工程能使 Apache 1.3 快 10 倍,使 Apache 2.0 快 4 倍。
22、来自Professional Apache的技巧。
23、官方的Performance Tuning文档,很好的资料,但是十分繁琐。
24、编译 PHP 时,建议采用如下的参数:
--enable-inline-optimization --disable-debug
25、安装mod_gzip(apache1.3)或者mod_deflate(apache2.0)等页面压缩软件减轻服务器拥堵。同时尽可能优化你的HTML文件和PHP文件。
26、优化 Linux ,more Linux 以及Solaris。
27、如果系统瓶颈在MYSQL的数据操作上,可以考虑将Mysql拆分成多个端口甚至多个服务器并适当优化my.cnf ,这比使用单个端口速度提高不少。
26、以上所有的方法都是针对单机而言的,如果你觉得系统还是不够快,可以采用集群,负载均衡,缓冲技术。采用 Squid 作为缓冲,配置 Squid 的方法。
转:关于PHP性能优化的更多相关文章
- 01.SQLServer性能优化之----强大的文件组----分盘存储
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 文章内容皆自己的理解,如有不足之处欢迎指正~谢谢 前天有学弟问逆天:“逆天,有没有一种方 ...
- 03.SQLServer性能优化之---存储优化系列
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 概 述:http://www.cnblogs.com/dunitian/p/60413 ...
- Web性能优化:What? Why? How?
为什么要提升web性能? Web性能黄金准则:只有10%~20%的最终用户响应时间花在了下载html文档上,其余的80%~90%时间花在了下载页面组件上. web性能对于用户体验有及其重要的影响,根据 ...
- Web性能优化:图片优化
程序员都是懒孩子,想直接看自动优化的点:传送门 我自己的Blog:http://cabbit.me/web-image-optimization/ HTTP Archieve有个统计,图片内容已经占到 ...
- C#中那些[举手之劳]的性能优化
隔了很久没写东西了,主要是最近比较忙,更主要的是最近比较懒...... 其实这篇很早就想写了 工作和生活中经常可以看到一些程序猿,写代码的时候只关注代码的逻辑性,而不考虑运行效率 其实这对大多数程序猿 ...
- JavaScript性能优化
如今主流浏览器都在比拼JavaScript引擎的执行速度,但最终都会达到一个理论极限,即无限接近编译后程序执行速度. 这种情况下决定程序速度的另一个重要因素就是代码本身. 在这里我们会分门别类的介绍J ...
- 02.SQLServer性能优化之---牛逼的OSQL----大数据导入
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 上一篇:01.SQLServer性能优化之----强大的文件组----分盘存储 http ...
- C++ 应用程序性能优化
C++ 应用程序性能优化 eryar@163.com 1. Introduction 对于几何造型内核OpenCASCADE,由于会涉及到大量的数值算法,如矩阵相关计算,微积分,Newton迭代法解方 ...
- Android性能优化之利用LeakCanary检测内存泄漏及解决办法
前言: 最近公司C轮融资成功了,移动团队准备扩大一下,需要招聘Android开发工程师,陆陆续续面试了几位Android应聘者,面试过程中聊到性能优化中如何避免内存泄漏问题时,很少有人全面的回答上来. ...
- 前端性能优化的另一种方式——HTTP2.0
最近在读一本书叫<web性能权威指南>谷歌公司高性能团队核心成员的权威之作. 一直听说HTTP2.0,对此也仅仅是耳闻,没有具体研读过,这次正好有两个篇章,分别讲HTTP1.1和HTTP2 ...
随机推荐
- javascript 匿名函数的理解,js括号中括function 如(function(){})
代码如下: (function(){ //这里忽略jQuery所有实现 })(); (function(){ //这里忽略jQuery所有实现 })(); 半年前初次接触jQuery的时候,我也 ...
- PHP运行出现Notice : Use of undefined constant 的完美解决方案
Notice: Use of undefined constant title - assumed 'title' in F:\wamp\www\load_myweb.php on line 22No ...
- [Javascript] An Introduction to JSPM (JavaScript Package Manager)
JSPM can handle installed packages, transpiling ES6, and bundling all from the command-line. This vi ...
- mysql优化21条
今天一个朋友向我咨询怎么去优化 MySQL,我按着思维整理了一下,大概粗的可以分为21个方向. 还有一些细节东西(table cache, 表设计,索引设计,程序端缓存之类的)先不列了,对一个系统,初 ...
- gdb - 列出所有函数调用
How can we list all the functions being called in an application For any realistically sized applica ...
- (转载)linux那点事儿(上)
原文地址:http://www.cnblogs.com/fnng/archive/2012/03/19/2407162.html 本文只是转载供自己学习之用 本文算是学linux的学习笔记吧!其实li ...
- linux的openfire运行日志配置经历
openfire的日志可以通过/usr/openfire/lib/log4j.xml(与openfire的安装目录有关,我的openfire是安装在/usr/openfire/)的xml配置文件进行设 ...
- mysql复习笔记
阅读目录 1.什么是SQL语句2.使用sql语句创建数据库和表3.创建数据表4.数据完整性约束5.四中基本字符类型说明6.SQL基本语句7.类型转换函数8.日期函数9.数学函数10.字符串函数11.联 ...
- Linux gvim windows 版本配置
http://www.cnblogs.com/xiekeli/archive/2012/08/13/2637176.html 资源在我的网盘里面
- 自己动手写控件(模仿mvc htmlhelper的类)
自定义helper类,要求命名空间在 System.Web.Mvc之下,要求,静态类,静态方法,特殊生成对应html的返回字段, 传递Htmlhleper,返回特定类型 返回值是MvcHtmlStri ...