调整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提取视频网站页面中的FLASH地址的代码
Apr 17 PHP
打造超酷的PHP数据饼图效果实现代码
Nov 23 PHP
php 带逗号千位符数字的处理方法
Jan 10 PHP
带密匙的php加密解密示例分享
Jan 29 PHP
phpmailer中文乱码问题的解决方法
Apr 22 PHP
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
Nov 18 PHP
JavaScript实现删除电脑的关机键
Jul 26 PHP
基于PHP实现短信验证码接口(容联运通讯)
Sep 06 PHP
Yii框架批量插入数据扩展类的简单实现方法
May 23 PHP
phpStudy配置多站点多域名和多端口的方法
Sep 01 PHP
PHP删除字符串中非字母数字字符方法总结
Jan 20 PHP
PHP单元测试配置与使用方法详解
Dec 27 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中在foreach中使用foreach ($arr as &$value) 这种类型的解释
2013/06/24 PHP
PHP打开和关闭文件操作函数总结
2014/11/18 PHP
PHP使用trim函数去除字符串左右空格及特殊字符实例
2016/01/07 PHP
PHP符合PSR编程规范的实例分享
2016/12/21 PHP
PHP新特性详解之命名空间、性状与生成器
2017/07/18 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
PHP hebrev()函数用法讲解
2019/02/21 PHP
[原创]图片分页查看
2006/08/28 Javascript
数组Array进行原型prototype扩展后带来的for in遍历问题
2010/02/07 Javascript
JS俄罗斯方块,包含完整的设计理念
2010/12/11 Javascript
jquery动画3.创建一个带遮罩效果的图片走廊
2012/08/24 Javascript
jquery ajax提交整个表单元素的快捷办法
2013/03/27 Javascript
js时间戳格式化成日期格式的多种方法
2013/11/11 Javascript
javascript运行机制之this详细介绍
2014/02/07 Javascript
全面兼容的javascript时间格式化函数(比较实用)
2014/05/14 Javascript
jQuery动画特效实例教程
2014/08/29 Javascript
基于RequireJS和JQuery的模块化编程日常问题解析
2016/04/14 Javascript
javascript使用 concat 方法对数组进行合并的方法
2016/09/08 Javascript
浅谈JS中的!=、== 、!==、===的用法和区别
2016/09/24 Javascript
JS实现根据密码长度显示安全条功能
2017/03/08 Javascript
深究AngularJS——ng-checked(回写:带真实案例代码)
2017/06/13 Javascript
详解如何在Javascript和Sass之间共享变量
2019/11/13 Javascript
Openlayers实现距离面积测量
2020/09/28 Javascript
[04:40]2016个国际邀请赛中国区预选赛场地——华西村观战指南
2016/06/25 DOTA
解决pandas中读取中文名称的csv文件报错的问题
2018/07/04 Python
Python抽象和自定义类定义与用法示例
2018/08/23 Python
Python socket模块实现的udp通信功能示例
2019/04/10 Python
解决pyinstaller打包发布后的exe文件打开控制台闪退的问题
2019/06/21 Python
浅谈python多进程共享变量Value的使用tips
2019/07/16 Python
Python实现从N个数中找到最大的K个数
2020/04/02 Python
工程师求职简历的自我评价分享
2013/10/10 职场文书
企划主管岗位职责
2013/12/12 职场文书
中秋节寄语2015
2015/03/24 职场文书
职工趣味运动会开幕词
2016/03/04 职场文书
python 实现定时任务的四种方式
2021/04/01 Python
详细谈谈JavaScript中循环之间的差异
2021/08/23 Javascript