调整PHP的性能


Posted in PHP onOctober 30, 2013

负载瓶颈 一般主要在以下四个方面:
1  数据库
2 服务器CPU
3 硬盘 I/O
4 网络带宽
除了这四个。还有什么值得我们优化的呢。php真很强。今天就说下在PHP的 脚本级上来调整PHP的性能。
如果你想在单台服务器 上提高PHP的性能。我们可以使用“编译缓存”。 编译cache 不单能提高性能而且会随着PHP程序的容量和代码复杂性的增加 服务器的性能也增加。什么是编译cache呢。等下告诉你。我们先说下PHP编译脚本文件所要做的两步吧:
1 php引擎读脚本文件,解释脚本然后在ZEND引擎里生成可执行的中间代码
2  ZEND 第二次开始 执行中间代码
我 们要注意。第一步是在每次PHP脚本文件被请求的时候都要重复一次的东西。 而且这个过程,会因为脚本里面又包括 include()require() eval()  而递归 重复执行第一步。可想而知消耗有多大了。特别PHP文件很大的时候。所以为什么建议写PHP文件时候不赞成行数过多。
说到这里大家就明白了。其实我们可以在 第一步那里做点文章。如果我们把第一步解释文件那里把解释后的代码缓存到共享内存里面。如果有第二个请求这个脚本的时候就可以跳过第一步而直接进入第二步。因为第一步已经cache在内存里面了。
我们看图比较一下
先看下如果没使用 编译cache 的情况
再来个使用了编译cache 的情况
行了看看就明白了。是吧。有了 编译cache 少走了很多弯路。 特别是在你的代码里有大量的  include 呀 require 呀的时候特别有效。
现在介绍三个编译cache:
1 The ionCube Accelerator  不开源的说。
2 TheZendAccelerator 要钱的罗。我穷呀
3  APC  这个我最喜欢因为不要钱。效果还挺好哦
我们就说APC
安装 大概是这样的。通过pear来安装
#pear install apc
修改下php.ini 加上扩展
extension = /path/to/apc.so
OK就这么简单。但你再次运行PHP的时候。  这个APC就已经有作用了。编译代码就cache 在了share 内存中了。那个爽呀。
如果是window 的 找下这个里面有 这个扩展
APC 安装完了后我们还需要调整下APC 的各方面的参数。 这个当然按照你自己项目环境来调整了。

PHP 相关文章推荐
PHP 身份验证方面的函数
Oct 11 PHP
2014年最新推荐的10款 PHP 开发框架
Aug 01 PHP
PHP5.3以上版本安装ZendOptimizer扩展
Mar 27 PHP
php获取文件类型和文件信息的方法
Jul 10 PHP
PHP基于文件存储实现缓存的方法
Jul 20 PHP
Symfony2中被遗弃的getRequest()方法分析
Mar 17 PHP
PHP预定义变量9大超全局数组用法详解
Apr 23 PHP
php+ajax注册实时验证功能
Jul 20 PHP
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
Sep 30 PHP
Zend Framework分发器用法示例
Dec 11 PHP
多个Laravel项目如何共用migrations详解
Sep 25 PHP
PHP上传图片到数据库并显示的实例代码
Dec 20 PHP
PHP数据过滤的方法
Oct 30 #PHP
php另类上传图片的方法(PHP用Socket上传图片)
Oct 30 #PHP
使用Curl进行抓取远程内容时url中文编码问题示例探讨
Oct 29 #PHP
is_uploaded_file函数引发的不能上传文件问题
Oct 29 #PHP
单点登录 Ucenter示例分析
Oct 29 #PHP
php中过滤非法字符的具体实现
Oct 29 #PHP
PHP时间戳 strtotime()使用方法和技巧
Oct 29 #PHP
You might like
用PHP和ACCESS写聊天室(二)
2006/10/09 PHP
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
2007/09/02 PHP
PHP中for与foreach的区别分析
2011/03/09 PHP
PHP查询MySQL大量数据的时候内存占用分析
2011/07/22 PHP
PHP学习笔记之字符串编码的转换和判断
2014/05/22 PHP
php实现只保留mysql中最新1000条记录
2015/06/18 PHP
Extjs学习笔记之九 数据模型(上)
2010/01/11 Javascript
wap浏览自动跳转到wap页面的js代码
2014/05/17 Javascript
Javascript 数组排序详解
2014/10/22 Javascript
原生javascript实现图片按钮切换
2015/01/12 Javascript
浅谈JavaScript数据类型及转换
2015/02/28 Javascript
javascript实现列表滚动的方法
2015/07/30 Javascript
怎么限制input的text里输入的值只能是数字(正则、js)
2016/05/16 Javascript
javascript 中的console.log和弹出窗口alert
2016/08/30 Javascript
jQuery向父辈遍历的简单方法
2016/09/18 Javascript
教你5分钟学会用requirejs(必看篇)
2017/07/25 Javascript
Node.js的进程管理的深入理解
2019/01/09 Javascript
JavaScript设计模式之装饰者模式实例详解
2019/01/17 Javascript
微信小程序表单验证WxValidate的使用
2019/11/27 Javascript
[00:08]DOTA2勇士令状等级奖励“天外飞星”
2019/05/24 DOTA
python PIL模块与随机生成中文验证码
2016/02/27 Python
Python实现Mysql数据库连接池实例详解
2017/04/11 Python
python 删除大文件中的某一行(最有效率的方法)
2017/08/19 Python
python实现逐个读取txt字符并修改
2018/12/24 Python
解决python web项目意外关闭,但占用端口的问题
2019/12/17 Python
python matplotlib.pyplot.plot()参数用法
2020/04/14 Python
巴西儿童时尚购物网站:Dinda
2019/08/14 全球购物
领导干部考察材料
2014/02/08 职场文书
电子商务专业求职信
2014/03/08 职场文书
太太口服液广告词
2014/03/20 职场文书
学生个人自我鉴定
2014/03/26 职场文书
英语演讲稿3分钟
2014/04/29 职场文书
中国合伙人观后感
2015/06/02 职场文书
《西门豹》教学反思
2016/02/23 职场文书
GoLang中生成UUID唯一标识的实现
2021/05/08 Golang
详解Spring Security如何在权限中使用通配符
2022/06/28 Java/Android