调整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之数据库操作详解及乱码解决!
Jan 02 PHP
php array_merge下进行数组合并的代码
Jul 22 PHP
phpadmin如何导入导出大数据文件及php.ini参数修改
Feb 18 PHP
使用PHP计算两个路径的相对路径
Jun 14 PHP
如何取得中文字符串中出现次数最多的子串
Aug 08 PHP
PHP Switch 语句之学习笔记
Sep 21 PHP
ThinkPHP进程计数类Process用法实例详解
Sep 25 PHP
golang与php实现计算两个经纬度之间距离的方法
Jul 22 PHP
基于jQueryUI和Corethink实现百度的搜索提示功能
Nov 09 PHP
PHP命令空间namespace及use的用法小结
Nov 27 PHP
PHP面向对象五大原则之开放-封闭原则(OCP)详解
Apr 04 PHP
yii2 url重写并隐藏index.php方法
Dec 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
TMDPHP 模板引擎使用教程
2012/03/13 PHP
php基础教程 php内置函数实例教程
2012/08/21 PHP
php curl模拟post请求小实例
2013/11/13 PHP
php+MySQL判断update语句是否执行成功的方法
2014/08/28 PHP
php自定义apk安装包实例
2014/10/20 PHP
Php-Redis安装测试笔记
2015/03/05 PHP
yii2中添加验证码的实现方法
2016/01/09 PHP
CI(CodeIgniter)框架实现图片上传的方法
2017/03/24 PHP
jQuery EasyUI API 中文文档 - Calendar日历使用
2011/10/19 Javascript
js中scrollHeight,scrollWidth,scrollLeft,scrolltop等差别介绍
2012/05/16 Javascript
js 获取(接收)地址栏参数值的方法
2013/04/01 Javascript
Asp.Net alert弹出提示信息的几种方法总结
2014/01/29 Javascript
Javascript 计算字符串在localStorage中所占字节数
2015/10/21 Javascript
jQuery ajax时间差导致的变量赋值问题分析
2016/01/22 Javascript
vue实现简单实时汇率计算功能
2017/01/15 Javascript
JS简单判断函数是否存在的方法
2017/02/13 Javascript
JavaScript中清空数组的三种方式
2017/03/22 Javascript
实现微信小程序的wxml文件和wxss文件在webstrom的支持
2017/06/12 Javascript
Vue的实例、生命周期与Vue脚手架(vue-cli)实例详解
2017/12/27 Javascript
React中的refs的使用教程
2018/02/13 Javascript
小程序扫描普通链接二维码跳转小程序指定界面方法
2019/05/07 Javascript
vue中v-show和v-if的异同及v-show用法
2019/06/06 Javascript
解决layer 动态加载select 失效的问题
2019/09/18 Javascript
python简单读取大文件的方法
2016/07/01 Python
在Python中使用gRPC的方法示例
2018/08/08 Python
python 搭建简单的http server,可直接post文件的实例
2019/01/03 Python
Python进阶之@property动态属性的实现
2019/04/01 Python
网页切图的CSS和布局经验与要点
2015/04/09 HTML / CSS
德购商城:德国进口直邮商城
2017/06/13 全球购物
巴基斯坦电子产品购物网站:Home Shopping
2017/09/14 全球购物
Ajax的优点和缺点
2014/11/21 面试题
初中女生自我鉴定
2013/12/19 职场文书
农林环境专业求职信
2014/03/13 职场文书
党员承诺书格式
2014/05/21 职场文书
公安局负责人查摆问题及整改方案
2014/09/27 职场文书
vue3获取当前路由地址
2022/02/18 Vue.js