调整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懒人函数 自动添加数据
Jun 28 PHP
php 日期和时间的处理-郑阿奇(续)
Jul 04 PHP
PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
Dec 28 PHP
浅析PHP Socket技术
Aug 02 PHP
php发送与接收流文件的方法
Feb 11 PHP
php给图片添加文字水印方法汇总
Aug 27 PHP
大家都应该掌握的PHP关联数组使用技巧
Dec 25 PHP
在Yii2中使用Pjax导致Yii2内联脚本载入失败的原因分析
Mar 06 PHP
PHP记录页面停留时间的方法
Mar 30 PHP
php连接mysql数据库
Mar 21 PHP
PHP 实现浏览记录并按日期分组
May 11 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
Jun 10 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
Linux平台PHP5.4设置FPM线程数量的方法
2016/11/09 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
jQuery 工具函数学习资料
2010/04/29 Javascript
JQueryiframe页面操作父页面中的元素与方法(实例讲解)
2013/11/19 Javascript
javascript批量修改文件编码格式的方法
2015/01/27 Javascript
浅析JavaScript事件和方法
2015/02/28 Javascript
javascript实现的固定位置悬浮窗口实例
2015/04/30 Javascript
Jquery数字上下滚动动态切换插件
2015/08/08 Javascript
基于jQuery和Bootstrap框架实现仿知乎前端动态列表效果
2016/11/09 Javascript
浅析Vue 和微信小程序的区别、比较
2018/08/03 Javascript
vue通信方式EventBus的实现代码详解
2019/06/10 Javascript
vue-cli 为项目设置别名的方法
2019/10/15 Javascript
Vue如何使用混合Mixins和插件开发详解
2020/02/05 Javascript
[02:30]联想杯DOTA2完美世界全国高校联赛—北京站现场
2015/11/16 DOTA
Django中的“惰性翻译”方法的相关使用
2015/07/27 Python
浅析Python中的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
使用Python对Excel进行读写操作
2017/03/30 Python
Python求出0~100以内的所有素数
2018/01/23 Python
Python实现的绘制三维双螺旋线图形功能示例
2018/06/23 Python
python将邻接矩阵输出成图的实现
2019/11/21 Python
Django ORM 查询表中某列字段值的方法
2020/04/30 Python
canvas粒子动画背景的实现示例
2018/09/03 HTML / CSS
iframe在移动端的缩放的示例代码
2018/10/12 HTML / CSS
英国家庭家具、照明和花园家具购物网站:Furniture123
2018/12/31 全球购物
计算机应用职专应届生求职信
2013/11/12 职场文书
班班通校本培训方案
2014/03/12 职场文书
导师评语大全
2014/04/26 职场文书
副处级干部考察材料
2014/05/17 职场文书
销售团队口号大全
2014/06/06 职场文书
乡镇党员干部群众路线对照检查材料思想汇报
2014/09/28 职场文书
幼儿园学前班幼儿评语
2014/12/29 职场文书
开学第一周总结
2015/07/16 职场文书
python获取字符串中的email
2022/03/31 Python
Golang 1.18 多模块Multi-Module工作区模式的新特性
2022/04/11 Golang
CentOS MySql8 远程连接实战
2022/04/19 MySQL
Java实现HTML转为Word的示例代码
2022/06/28 Java/Android