说明

PHP 5.5+版本以上的,可以使用PHP自带的opcache开启性能加速(默认是关闭的)。对于PHP 5.5以下版本的,需要使用APC加速,这里不说明,可以自行上网搜索PHP APC加速的方法。

opcache是Zend Optimizer编译到php环境中的名字,意思即优化缓存。Zend OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是省去了每次加载和解析 PHP 脚本的开销。

这个PHP加速插件的主要原理就是把PHP执行后的数据缓冲到内存中从而避免重复的编译过程,能够直接使用缓冲区已编译的代码从而提高速度,降低服务器负载,它们的效率是显而易见的。

在 PHP 5.5及以后的版本中 OpCache 已内建该模块,在编译安装php时使用 --enable-opcache 即可在以后的开发工作中正常使用Opcache了。

(1)在命令行下可通过如下命令检查是否已经安装了OPcache:

php -m | grep "OPcache"

有结果则代表已安装了。

(2)安装OPCache模块

如果你的php环境没有安装该模块,也可以通过如下方法进行安装:

依次执行下面的命令

wget http://pecl.php.net/get/zendopcache-7.0.2.tgz

tar xzf zendopcache-7.0.2.tgz

cd zendopcache-7.0.2

phpize

(如果不知道 phpize 在哪里的话可以通过 find 命令进行查找,也可以找到PHP路径,通常是在一起的,我的就在/alidata/server/php/bin/phpize,下面这行也要按你的php.ini路径自行修改)

./configure --with-php-config=/usr/local/php/bin/php-config

make

make install

如果显示Installing shared extensions: /alidata/server/php/lib/php/extensions/no-debug-zts-20100525/ 则表示安装成功了。

(3)开启OPCache模块支持

找到php.ini文件,在文件末尾加上如下代码(如果已经存在[opcache]这个标签了,则只需在这个标签下做相应的添加或者修改):

[opcache]

; dll地址

zend_extension=php_opcache.dll

; 开关打开

opcache.enable=1

; 开启CLI

opcache.enable_cli=1

; 可用内存, 酌情而定, 单位为:Mb

opcache.memory_consumption=128

; Zend Optimizer + 暂存池中字符串的占内存总量.(单位:MB)

opcache.interned_strings_buffer=8

; 对多缓存文件限制, 命中率不到 100% 的话, 可以试着提高这个值

opcache.max_accelerated_files=10000

; Opcache 会在一定时间内去检查文件的修改时间, 这里设置检查的时间周期, 默认为 2, 定位为秒

opcache.revalidate_freq=1

; 打开快速关闭, 打开这个在PHP Request Shutdown的时候回收内存的速度会提高

opcache.fast_shutdown=1

; 不保存文件/函数的注释

opcache.save_comments=0

添加完毕重启apache或者nginx服务器,打开phpinfo页面看看是否已经生效,如果看到如下信息则代表已经配置成功了。

(4)功能测试以及注意事项

在phpinfo()信息中, 目前来看有两条信息犹为重要:

Cache hits     (高级缓存命中)

Cache misses  (高级缓存未命中)

通过这两条信息中即可观察缓存运行情况。

我们做个测试,验证一下什么是opcache,新建包含如下代码的一个文件:

echo 'hello opcache';

这是一段非常简单的php代码,请保存为demo.php文件然后访问,随意刷新,Cache hits数值会不停地增加,说明起作用了。

然后你修改代码为:

echo 'hello codetc.com';

再刷新demo.php,应该可以看到效果,打印出来的值仍然是 hello opcache,即源码被缓存了,它不再解析demo.php文件。

那多少秒之后其结果才会变为 hello phpernote.com 呢?这里可通过设置:

opcache.force_restart_timeout=180

的时间来控制更新速度,这里的单位是秒,即180秒后重新编译一次源php编码。

这就类似于web项目中的静态文件缓存一下,比如我们加载一个网页,浏览器会自动帮我们把jpg,css缓存起来,唯独php没有缓存,每次均需要open文件,解析代码, 执行代码这一过程,而opcache即可解决这个问题,代码会被高速缓存起来,提升访问速度。

所以当改变PHP文件代码后,并不能立即看到效果,这视opcache.revalidate_freq的更新周期而定,所以建议在项目更新执行自动化脚本利用opcache_reset()函数自动重置opcache。OPcache总共提供了如下几个函数:

opcache_compile_file — 无需运行,即可编译并缓存 PHP 脚本

opcache_get_configuration — 获取缓存的配置信息

opcache_get_status — 获取缓存的状态信息

opcache_invalidate — 废除脚本缓存

opcache_reset — 重置字节码缓存的内容

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

php开启opcache,启用OPCache提高PHP程序性能的方法相关推荐

  1. php5.5 opcache,PHP5.5+启用OPCache提高php程序性能的方法

    opcache是Zend Optimizer编译到php环境中的名字,意思即优化缓存.Zend OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字 ...

  2. 提高WPF程序性能的几条建议

    原文:提高WPF程序性能的几条建议 这篇博客将介绍一些提高WPF程序的建议(水平有限,如果建议有误,请指正.) 1. 加快WPF程序的启动速度: (1).减少需要显示的元素数量,去除不需要或者冗余的X ...

  3. system.gc 性能_使用这些先进的GC技术提高应用程序性能

    system.gc 性能 应用程序性能是我们关注的重点,垃圾收集优化是取得小而有意义的进步的好地方 自动化垃圾收集(与JIT HotSpot编译器一起)是JVM中最先进,最有价值的组件之一,但是许多开 ...

  4. 使用这些先进的GC技术提高应用程序性能

    应用程序性能是我们的首要考虑因素,垃圾收集优化是取得小而有意义的进步的好地方 自动化垃圾收集(与JIT HotSpot编译器一起)是JVM中最先进,最有价值的组件之一,但是许多开发人员和工程师对垃圾收 ...

  5. 哪些模块可用于python性能分析_提升Python程序性能的方法有哪些?看完你就知道啦!...

    掌握一些技巧,可尽量提高Python程序性能,也可以避免不必要的资源浪费.今天就为大家带来七个可以提升python程序性能的好习惯,赶快来学习吧:. 1.使用局部变量 尽量使用局部变量代替全局变量:便 ...

  6. 几种通过降低Cache失效率来提升程序性能的方法

    几种通过降低Cache失效率来提升程序性能的方法 1 将矩阵转置 2 分块处理矩阵乘法 3 将分块和转置结合 4 总结 ​ 当程序访问多个数组时,经常会出现有些数组按行访问,有些数组按列访问的情况.以 ...

  7. 提高计算机性能的主流方法,提高电脑内存性能的方法

    提高电脑内存性能的方法 如何优化内存的管理,提高内存的使用效率,尽可能地提高运行速度,这样能让我们的电脑运行的更快,下面小编就来和大家说说提高电脑内存性能的方法吧! 提高电脑内存性能的方法 1.改变页 ...

  8. 54个提高PHP程序运行效率的方法(转载)

    原文地址:http://www.jb51.net/article/69677.htm 1. 如果一个方法可静态化,就对它做静态声明.速率可提升至4倍. 2. echo 比 print 快. 3. 使用 ...

  9. 使用 OpCache 提升 PHP 5.5+ 程序性能

    说明 PHP 5.5 以后内建了 OpCache , OpCache 的加速原理是把编译后的 bytecode 存储在内存里面, 避免重复编译 PHP 所造成的资源浪费. 引用 How To Enab ...

最新文章

  1. 超详细Pycharm部署项目视频教程
  2. java二维码生成技术
  3. Python爬虫从入门到放弃(二十)之 Scrapy分布式原理
  4. c语言建立两个磁盘文件,建立两个磁盘文件f1.dat和f2.dat,编程序实现以下工作...
  5. 如梦如幻,开源实时的天空特效算法!
  6. Python使用扩展库numpy计算矩阵加权平均值
  7. 必须收藏的文档:TIBCO Spotfire入门大全
  8. 华为eSight网络监控平台安装-最新版本
  9. QTableView固定行显示的问题
  10. OPPO开放平台移动应用认领
  11. java商城管理系统_带数据库_带界面化可用来毕业设计
  12. 016-打印菱形-【c语言版】
  13. 《Bootloader 启动流程和概念介绍》
  14. 2022年茶艺师(中级)报名考试及茶艺师(中级)作业考试题库
  15. 【通信原理】实验二 角度调制实验
  16. vs中c语言图形显示出来,VS2010+Opencv+MFC读取图像和视频显示在Picture控件
  17. 使用SPWM控制逆变器
  18. 帮一个朋友解决了 sysfader。。。cannot read...ie crash问题。。
  19. C++——构造函数、析构函数以及复制构造函数
  20. 基站天线交叉极化比测量的不确定度评定

热门文章

  1. 「 论文投稿 」《Mechanical Systems and Signal Processing》录用经历
  2. Little Snitch 5 - Mac 老牌防火墙安全工具软件小飞贼,监控和组织特定软件的网络连接
  3. Waves区块链—基于Nuetrino协议的DeFo如何与传统金融实现互联互通?
  4. gcc的-l参数,-L参数,-I参数
  5. linux学习- 添加用户并授权root权限
  6. 2023年前端面试题考点之 通信(渲染、http、缓存、异步、跨域、安全)
  7. 一条简单的sql语句运行15天的原因分析(r5笔记第17天)
  8. 想皮肤水嫩有光泽?五中鲜花让你学会养生美容!
  9. java伪代码_JAVA 伪代码
  10. 6.23星期四库作业