调整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 相关文章推荐
DOMXML函数笔记
Oct 09 PHP
PHP数组交集的优化代码分析
Mar 06 PHP
php 删除一个数组中的某个值.兼容多维数组!
Feb 18 PHP
探讨PHP中OO之静态关键字以及类常量的详解
Jun 07 PHP
mac下Apache + MySql + PHP搭建网站开发环境
Jun 02 PHP
简单介绍PHP非阻塞模式
Mar 03 PHP
CI框架简单邮件发送类实例
May 18 PHP
Yii2实现上下联动下拉框功能的方法
Aug 10 PHP
php实现的统计字数函数定义与使用示例
Jul 26 PHP
PHP迭代与递归实现无限级分类
Aug 28 PHP
PHP区块查询实现方法分析
May 12 PHP
ThinkPHP5.0框架控制器继承基类和自定义类示例
May 25 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 采集书并合成txt格式的实现代码
2009/03/01 PHP
PHP 一个页面执行时间类代码
2010/03/05 PHP
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
2011/08/11 PHP
php生成局部唯一识别码LUID的代码
2012/10/06 PHP
Window 7/XP 安装Apache 2.4与PHP 5.4 的过程详解
2013/06/02 PHP
php  单例模式详细介绍及实现源码
2016/11/05 PHP
Thinkphp5.0 框架视图view的比较标签用法分析
2019/10/12 PHP
找到一点可怜的关于dojo资料,谢谢作者!
2006/12/06 Javascript
javascript dom 基本操作小结
2010/04/11 Javascript
jQuery 创建Dom元素
2010/05/07 Javascript
jQuery的实现原理的模拟代码 -4 重要的扩展函数 extend
2010/08/03 Javascript
js将控件隐藏的方法及display属性介绍
2013/07/04 Javascript
JS获取DropDownList的value值与text值的示例代码
2014/01/07 Javascript
jquery操作checked属性以及disabled属性的多种方法
2014/06/20 Javascript
纯jquery实现模仿淘宝购物车结算
2015/08/20 Javascript
js窗口关闭提示信息(兼容IE和firefox)
2015/10/23 Javascript
利用AJAX实现WordPress中的文章列表及评论的分页功能
2016/05/17 Javascript
vue使用xe-utils函数库的具体方法
2018/03/06 Javascript
通过jquery获取上传文件名称、类型和大小的实现代码
2018/04/19 jQuery
详解在Vue中使用TypeScript的一些思考(实践)
2018/07/06 Javascript
浅谈vue 单文件探索
2018/09/05 Javascript
微信公众号H5支付接口调用方法
2019/01/10 Javascript
vue动态配置模板 'component is'代码
2019/07/04 Javascript
基于javascript实现放大镜特效
2020/12/03 Javascript
[02:20]DOTA2中文配音宣传片
2013/05/22 DOTA
Python的Flask框架与数据库连接的教程
2015/04/20 Python
基于python时间处理方法(详解)
2017/08/14 Python
python使用opencv读取图片的实例
2017/08/17 Python
python thrift搭建服务端和客户端测试程序
2018/01/17 Python
flask 实现上传图片并缩放作为头像的例子
2020/01/09 Python
pandas中的数据去重处理的实现方法
2020/02/10 Python
详解如何在css3打包后自动追加前缀插件:autoprefixer
2018/12/18 HTML / CSS
德国排名第一的主题公园门票网站:Attraction Tickets Direct
2019/09/09 全球购物
建筑专业毕业生推荐信
2013/11/21 职场文书
迟到检讨书300字
2014/02/14 职场文书
漫画「请问您今天要来点兔子吗?」最新杂志彩页公开
2022/03/24 日漫