调整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简单封装了一些常用JS操作
Feb 25 PHP
PHP详细彻底学习Smarty
Mar 27 PHP
php中使用explode查找某个字符是否存在的方法
Jul 12 PHP
解析zend Framework如何自动加载类
Jun 28 PHP
ThinkPHP3.1新特性之内容解析输出详解
Jun 19 PHP
PHP中isset与array_key_exists的区别实例分析
Jun 02 PHP
php简单判断文本编码的方法
Jul 30 PHP
PHP访问数据库集群的方法小结
Mar 14 PHP
详解PHP如何更好的利用PHPstorm的自动提示
Aug 18 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
Sep 16 PHP
PHP高效获取远程图片尺寸和大小的实现方法
Oct 20 PHP
PHP7下协程的实现方法详解
Dec 17 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 中dirname(_file_)讲解
2007/03/18 PHP
PHP IF ELSE简化/三元一次式的使用
2011/08/22 PHP
PHP压缩html网页代码(清除空格,换行符,制表符,注释标记)
2012/04/02 PHP
PHP 如何获取二维数组中某个key的集合
2014/06/03 PHP
PHP中round()函数对浮点数进行四舍五入的方法
2014/11/19 PHP
js不是基础的基础
2006/12/24 Javascript
javascript基于jQuery的表格悬停变色/恢复,表格点击变色/恢复,点击行选Checkbox
2008/08/05 Javascript
javascript/jquery获取地址栏url参数的方法
2014/03/05 Javascript
node.js中的fs.link方法使用说明
2014/12/15 Javascript
jQuery实现列表内容的动态载入特效
2015/08/08 Javascript
JavaScript实现的背景自动变色代码
2015/10/17 Javascript
微信小程序 WebSocket详解及应用
2017/01/21 Javascript
angular ng-click防止重复提交实例
2017/06/16 Javascript
Vue中的情侣属性$dispatch和$broadcast详解
2019/03/07 Javascript
详解javascript 变量提升(Hoisting)
2019/03/12 Javascript
如何基于vue-cli3.0构建功能完善的移动端架子
2019/04/24 Javascript
微信小程序图表插件wx-charts用法实例详解
2019/05/20 Javascript
微信小程序地图绘制线段并且测量(实例代码)
2020/01/02 Javascript
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)
2020/01/14 Javascript
Vue向后台传数组数据,springboot接收vue传的数组数据实例
2020/11/12 Javascript
[47:03]Ti4第二日主赛事败者组 LGD vs iG 2
2014/07/21 DOTA
Python BeautifulSoup中文乱码问题的2种解决方法
2014/04/22 Python
Python文件操作基本流程代码实例
2017/12/11 Python
使用python为mysql实现restful接口
2018/01/05 Python
python微信跳一跳游戏辅助代码解析
2018/01/29 Python
在python3.5中使用OpenCV的实例讲解
2018/04/02 Python
Python装饰器用法实例总结
2018/05/26 Python
浅析python函数式编程
2020/09/26 Python
Deux par Deux官方网站:设计师童装
2020/01/03 全球购物
总经理岗位职责
2013/11/09 职场文书
竞选班长的演讲稿
2014/04/24 职场文书
2014年行政部工作总结
2014/11/19 职场文书
2015年个人实习工作总结
2015/05/28 职场文书
六一儿童节园长致辞
2015/07/31 职场文书
PostgreSQL数据库去除重复数据和运算符的基本查询操作
2022/04/12 PostgreSQL