PHP性能提升之OPcache相关参数详解

工具 memory 发布于December 15, 2016 标签: PHP

OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。

PHP 5.5.0 及后续版本中已经绑定了 OPcache 扩展。 对于 PHP 5.2,5.3 和 5.4 版本可以使用 » PECL 扩展中的 OPcache 库。

安装

php5.5及以后的版本在编译时加上

 --enable-opcache

选项来开启 OPcache。

PHP 5.2, 5.3 和 5.4 版本则需要编译pecl扩展
从 http://pecl.php.net/package/ZendOpcache 下载
大概如下:

cd extname
phpize
./configure --with-php-config=/path/php/bin/php-config
make
make install


配置指令的简短说明

  • opcache.enable boolean 启用操作码缓存。如果禁用此选项,则不会优化和缓存代码
  • opcache.enable_cli boolean 仅针对 CLI 版本的 PHP 启用操作码缓存
  • opcache.memory_consumption integer OPcache 的共享内存大小,以兆字节为单位
  • opcache.interned_strings_buffer integer 用来存储临时字符串的内存大小,以兆字节为单位
  • opcache.max_accelerated_files integer OPcache 哈希表中可存储的脚本文件数量上限 设置值取值范围最小值是 200,最大值在 PHP 5.5.6 之前是 100000,PHP 5.5.6 及之后是 1000000。
  • opcache.max_wasted_percentage integer 浪费内存的上限,以百分比计。 如果达到此上限,那么 OPcache 将产生重新启动续发事件。
  • opcache.use_cwd boolean 如果启用,OPcache 将在哈希表的脚本键之后附加改脚本的工作目录, 以避免同名脚本冲突的问题。 禁用此选项可以提高性能,但是可能会导致应用崩溃。
  • 比如,两个脚本名称一样..不使用此项,可能导致 两个脚本错乱!!!
  • opcache.validate_timestamps boolean 如果启用,那么 OPcache 会每隔 opcache.revalidate_freq 设定的秒数 检查脚本是否更新。 如果禁用此选项,你必须使用 opcache_reset() 或者 opcache_invalidate() 函数来手动重置 OPcache,也可以 通过重启 Web 服务器来使文件系统更改生效。
  • opcache.revalidate_freq integer 检查脚本时间戳是否有更新的周期,以秒为单位。 设置为 0 会导致针对每个请求, OPcache 都会检查脚本更新。如果 opcache.validate_timestamps 配置指令设置为禁用,那么此设置项将会被忽略。
  • opcache.revalidate_path boolean 如果禁用此选项,在同一个 include_path 已存在的缓存文件会被重用
  • opcache.save_comments boolean 如果禁用,脚本文件中的注释内容将不会被包含到操作码缓存文件, 这样可以有效减小优化后的文件体积,但会导致某些框架不可用
  • opcache.load_comments boolean 如果禁用,则即使文件中包含注释,也不会加载这些注释内容。 本选项可以和 opcache.save_comments 一起使用,以实现按需加载注释内容。
  • opcache.fast_shutdown boolean 如果启用,则会使用快速停止续发事件。
  • opcache.enable_file_override boolean 如果启用,则在调用函数 file_exists(), is_file() 以及 is_readable() 的时候, 都会检查操作码缓存,无论文件是否已经被缓存。 如果应用中包含检查 PHP 脚本存在性和可读性的功能,这样可以提升性能。 但是如果禁用了 opcache.validate_timestamps 选项, 可能存在返回过时数据的风险。
  • opcache.optimization_level integer 控制优化级别的二进制位掩码。
  • opcache.inherited_hack boolean 在 PHP 5.3 之前的版本,OPcache 会存储代码中使用 DECLARE_CLASS 操作码 来实现继承的位置。当文件被加载之后,OPcache 会尝试使用当前环境来绑定被继承的类。 由于当前脚本中可能并不需要 DECLARE_CLASS 操作码,如果这样的脚本需要对应的操作码被定义时, 可能无法运行。 在 PHP 5.3 及后续版本中,此配置指令会被忽略。
  • opcache.dups_fix boolean 仅作为针对 “不可重定义类”错误的一种解决方案。
  • opcache.blacklist_filename string OPcache 黑名单文件位置。 黑名单文件为文本文件,包含了不进行预编译优化的文件名,每行一个文件名。 黑名单中的文件名可以使用通配符,也可以使用前缀。 此文件中以分号(;)开头的行将被视为注释。 
    例如:
; 将特定文件加入到黑名单
/var/www/broken.php
; 以字符 x 文件打头的文件
/var/www/x
; 通配符匹配
/var/www/*-broken.php
  • opcache.max_file_size integer 以字节为单位的缓存的文件大小上限。设置为 0 表示缓存全部文件。
  • opcache.consistency_checks integer 如果是非 0 值,OPcache 将会每隔 N 次请求检查缓存校验和
  • opcache.force_restart_timeout integer 如果缓存处于非激活状态,等待多少秒之后计划重启。 如果超出了设定时间,则 OPcache 模块将杀除持有缓存锁的进程, 并进行重启。
  • opcache.error_log string OPcache 模块的错误日志文件。
  • opcache.log_verbosity_level integer OPcache 模块的日志级别。
  • opcache.preferred_memory_model string OPcache 首选的内存模块。可选值包括: mmap,shm, posix 以及 win32。
  • opcache.protect_memory boolean 保护共享内存,以避免执行脚本时发生非预期的写入
  • opcache.mmap_base string 在 Windows 平台上共享内存段的基地址。
  • opcache.restrict_api string 仅允许路径是以指定字符串开始的 PHP 脚本调用 OPcache API 函数。

转载于:https://www.cnblogs.com/whm-blog/p/10103203.html

php opcache 详解相关推荐

  1. php 存储多选项_php高并发之opcache详解

    客户的一台服务器,业务逻辑比较简单 .估算pv在120w左右吧,用的是阿里云2c4g的服务器.一大早就开始卡顿了,登陆服务器后查看负载到了八九十. 之后就想办法调整一下吧.突然想起某位前辈说过的:开启 ...

  2. php高并发之opcache详解

    客户的一台服务器,业务逻辑比较简单 .估算pv在120w左右吧,用的是阿里云2c4g的服务器.一大早就开始卡顿了,登陆服务器后查看负载到了八九十. 之后就想办法调整一下吧.突然想起某位前辈说过的:开启 ...

  3. LNMP nginx1.4.6+php5.5.11+mysql5.6.17+mecache+opcache编译安装+opcache参数详解+opcache可视化php页面代码

    可能要用到的软件: libiconv-1.13.tar.gz  libmcrypt-2.5.8.tar.gz  mcrypt-2.6.8.tar.gz  mhash-0.9.9.9.tar.gz  m ...

  4. LNMP架构详解(2)——Mysql、PHP、Nginx源码编译过程

    前言 本文将介绍LNMP架构中Mysql.PHP.Nginx的源码编译过程:这时有人不仅会问:在我们使用的Linux系统中,可以从yum源中获得mysql.php,为什么要进行如此漫长复杂的过程进行编 ...

  5. php 8 jit,PHP JIT 是什么?PHP8 新特征之 JIT 图文详解_后端开发

    PHP8 alpha1已经在昨天宣布,置信关于JIT是人人最体贴的,PHP8 JIT是什么,又怎样用,又有什么要注意的,以及机能提拔究竟咋样? 视频教程引荐:<PHP编程从入门到通晓> 起 ...

  6. 阿里云主机Linux服务器配置步骤详解

    下面我们一起来看看关于阿里云主机Linux服务器配置步骤详解,如果你正在使用阿里云主机我们可进入参考一下配置步骤哦,有兴趣的同学可进入参考. 一提到云主机,大家肯定熟知国内最知名品牌--阿里云了,后来 ...

  7. 从命令行到IDE,版本管理工具Git详解(远程仓库创建+命令行讲解+IDEA集成使用)

    首先,Git已经并不只是GitHub,而是所有基于Git的平台,只要在你的电脑上面下载了Git,你就可以通过Git去管理"基于Git的平台"上的代码,常用的平台有GitHub.Gi ...

  8. JVM年轻代,老年代,永久代详解​​​​​​​

    秉承不重复造轮子的原则,查看印象笔记分享连接↓↓↓↓ 传送门:JVM年轻代,老年代,永久代详解 速读摘要 最近被问到了这个问题,解释的不是很清晰,有一些概念略微模糊,在此进行整理和记录,分享给大家.在 ...

  9. docker常用命令详解

    docker常用命令详解 本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,这里只作为自己以后的备忘记录下来. 根据自己的理解,总的来说分为以下几种: Doc ...

最新文章

  1. 软通动力华为java机考题库_华为机考笔试刷题-java-1
  2. 关于PHP上传文件时配置 php.ini 中的 upload_tmp_dir
  3. C++_类和对象_对象特性_友元_成员函数做友元---C++语言工作笔记054
  4. BFC与边距重叠详解
  5. 使用开源软件 Mantis 实施缺陷跟踪的成功实践
  6. 为什么互联网公司天天都在招人?
  7. jQuery过滤选择器 通过过滤条件选取需要的元素
  8. roundcube mysql_Roundcube Webmail 安装配置
  9. 淘宝刷DSR动态评分技巧
  10. 【Android 进程保活】应用进程拉活 ( 应用进程拉活简介 | 广播拉活 | 显示广播与隐式广播 | 全家桶拉活 )
  11. 宝塔部署网站无法访问
  12. 【简单入门】ChatGPT prompt engineering (中文版)笔记 |吴恩达ChatGPT 提示工程
  13. 腾讯云运维工程师认证TCA原题(含解析)
  14. 一个五层加密过的表白恢复密码解密的过程
  15. 没有免费午餐定理(No Free Lunch Theorem)
  16. EXCEL描述统计输出详解:标准误、置信度、偏度、峰度和JB检验
  17. 相机标定推到与zc求解
  18. python写csv文件分隔符问题
  19. 七年之痒,很多人迈不过去的槛
  20. 把N1打造成高效能的多平台游戏机

热门文章

  1. java中reject方法作用_Java BindingResult.rejectValue方法代碼示例
  2. NetCore NW714 v2.0路由器TTL救砖
  3. Android 基础 —— 模拟实现拨打电话功能
  4. centos7 下安装Poco
  5. PhpStorm配置Xdebug调试PHP程序
  6. int a[5]={}, a+1与(int*)a+1的区别
  7. 前端学习(3226):回调形式的ref
  8. [css] 实现单行文本居中和多行文本左对齐并超出显示“...“
  9. [css] 你有用过vw布局吗?和使用rem有什么区别?
  10. 工作234:按钮禁用