调整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 16 PHP
PHP5 面向对象程序设计
Feb 13 PHP
php heredoc和phpwind的模板技术使用方法小结
Mar 28 PHP
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
Oct 13 PHP
使用Limit参数优化MySQL查询的方法
Nov 12 PHP
php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
Jan 17 PHP
PHP将HTML转换成文本的实现代码
Jan 21 PHP
php生成验证码,缩略图及水印图的类分享
Apr 07 PHP
php实现的网页版剪刀石头布游戏示例
Nov 25 PHP
php 中的closure用法详解
Jun 12 PHP
php7安装yar扩展的方法详解
Aug 03 PHP
php转换上传word文件为PDF的方法【基于COM组件】
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
ThinkPHP与PHPExcel冲突解决方法
2011/08/08 PHP
Yii使用CLinkPager分页实例详解
2014/07/23 PHP
浅谈使用PHP开发微信支付的流程
2015/10/04 PHP
基于ThinkPHP5.0实现图片上传插件
2017/09/25 PHP
PHP Primary script unknown 解决方法总结
2019/08/22 PHP
PHP如何使用cURL实现Get和Post请求
2020/07/11 PHP
PhpStorm2020.1 安装 debug - Postman 调用的详细教程
2020/08/17 PHP
javascript禁用键盘功能键让右击及其他键无效
2013/10/09 Javascript
javascript去除字符串左右两端的空格
2015/02/05 Javascript
JavaScript 判断一个对象{}是否为空对象的简单方法
2016/10/09 Javascript
JS操作input标签属性checkbox全选的实现代码
2017/03/02 Javascript
Node.js中 __dirname 的使用介绍
2017/06/19 Javascript
Vue源码解析之数组变异的实现
2018/12/04 Javascript
jQuery实现适用于移动端的跑马灯抽奖特效示例
2019/01/18 jQuery
微信小程序云开发实现数据添加、查询和分页
2019/05/17 Javascript
JS原型prototype和__proto__用法实例分析
2020/03/14 Javascript
python单例模式实例分析
2015/04/08 Python
Python的Django框架中自定义模版标签的示例
2015/07/20 Python
python3抓取中文网页的方法
2015/07/28 Python
Python单例模式实例详解
2017/03/01 Python
详解Python之数据序列化(json、pickle、shelve)
2017/03/30 Python
python字符串string的内置方法实例详解
2018/05/14 Python
python广度优先搜索得到两点间最短路径
2019/01/17 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
2019/08/23 Python
Java文件与类动手动脑实例详解
2019/11/10 Python
python psutil监控进程实例
2019/12/17 Python
享誉全球的多元化时尚精品购物平台:Farfetch发发奇(支持中文)
2017/08/08 全球购物
欧洲领先的电子和电信零售商和服务提供商:Currys PC World Business
2017/12/05 全球购物
Street One瑞士:德国现代时装公司
2019/10/09 全球购物
伊莱克斯(Electrolux)俄罗斯网上商店:瑞典家用电器品牌
2021/01/23 全球购物
客服主管岗位职责
2013/12/13 职场文书
医药学专业大学生职业生涯规划书论文
2014/01/21 职场文书
《大作家的小老师》教学反思
2014/04/16 职场文书
2016大学迎新晚会开场白
2015/11/24 职场文书
少儿励志名言(80句)
2019/08/14 职场文书
css3中transform属性实现的4种功能
2021/08/07 HTML / CSS