简介 Opcache 的前生是 Optimizer+ ,它是 Zend 开发的 PHP 优化加速组件。Optimizer+ 将 PHP 代码预编译生成的脚本文件 Opcode 缓存在共享内存中供以后反复使用,从而避免了从磁盘读取代码再次编译的时间消耗。同时,它还应用了一些代码优化模式,使得代码执行更快。从而加速 PHP 的执行。 正常的执行流程如下: 开启 Opcache 后的执行流程如下: Yum 安装 php -v yum list *opcache* yum -y install rh-php71-php-opcache.x86_64 kill -USR2 cat `/usr/ **PHP Opcache详解与启用方法** PHP Opcache,前身是Optimizer+,是由Zend公司开发的一款用于优化和加速PHP程序执行的组件。它的工作原理是将PHP代码编译成的Opcode缓存到共享内存中,以此来避免每次运行时都需要从磁盘读取源代码并重新编译的过程。这大大减少了I/O操作,提升了PHP应用程序的执行效率。 **正常执行流程与Opcache开启后的流程** 在没有启用Opcache的情况下,PHP的执行流程包括读取源代码、解析代码、编译代码(转化为Opcode)和执行Opcode。启用Opcache后,流程变为:首次请求时,PHP代码会被编译成Opcode并存储在内存中;后续请求时,直接从内存中读取已经编译好的Opcode,跳过了编译步骤,从而加快了程序的运行速度。 **安装Opcache** 在Linux系统上,可以通过Yum包管理器来安装Opcache。你可以通过`yum list *opcache*`命令列出可用的Opcache包,然后使用`yum -y install rh-php71-php-opcache.x86_64`来安装。安装完成后,可能需要重启PHP-FPM服务,如`kill -USR2 cat /usr/local/php/var/run/php-fpm.pid`,以及刷新Nginx配置,如`nginx -s reload`。 **配置Opcache** Opcache的配置通常在php.ini文件中进行。以下是部分关键配置项: 1. `zend_extension=opcache.so`: 启用Opcache扩展。 2. `opcache.enable=1`: 开启Opcache功能。 3. `opcache.enable_cli=1`: 使CLI环境下的Opcache也生效。 4. `opcache.memory_consumption=128`: 设置Opcache共享内存的大小,例如128MB。 5. `opcache.interned_strings_buffer=8`: 字符串在进程间驻留所需的内存大小,8MB为例。 6. `opcache.max_accelerated_files=4000`: 可以缓存的文件数量,根据项目实际规模调整。 7. `opcache.revalidate_freq=60`: 缓存文件的更新检查频率,60秒为例。 8. `opcache.validate_timestamps=1`: 开启文件更新检查,以确保缓存与源代码同步。 9. `opcache.fast_shutdown=1`: 开启快速关闭机制,但PHP 7.2.0及以上版本已移除。 10. `opcache.file_cache=/tmp`: 开启缓存到外部文件,指定缓存目录。 **检查Opcache是否安装成功** 你可以通过`php -m`命令或者在PHP脚本中使用`phpinfo()`函数来检查Opcache是否成功安装和启用。 **清理缓存** 在FPM模式下,`opcache_reset()`函数可以用来清除所有缓存,但在CLI环境中可能无效。在生产环境中,通常不建议频繁清理缓存,因为这可能导致性能下降。 **Opcache的使用和优化** 为了充分利用Opcache带来的性能提升,建议进行以下优化: - 根据服务器资源适当调整`opcache.memory_consumption`和`opcache.max_accelerated_files`等参数。 - 使用`opcache.validate_timestamps`确保代码更新时及时更新缓存。 - 监控Opcache的内存使用情况,避免因内存不足导致的问题。 通过上述方法,你可以有效地开启和配置PHP Opcache,提升PHP程序的执行效率。然而,优化工作并非一蹴而就,需要结合具体的应用场景和服务器资源,进行持续的调整和监控。
- 粉丝: 2
- 资源: 895
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于MATLAB的多种算法图像分割对比 有阈值法【包括迭代式阈值,OTSU迭代,直方图阈值法】和区域法【区域生长法和分裂合并法】
- Intel Developer Cloud-IPUs in IDC
- 基于Java语言的经典设计模式与源码解析
- 基于Jupyter Notebook的Python半自动化办公脚本设计源码
- mshare - Sharing Page Tables Across Processes
- 基于图像特征的遥感图像相似匹配(【武汉大学遥感学院】Matlab课设 )
- 基于Java的社团活动网站设计与实现源码
- 基于Flask框架的山东大学数据库课设——电影院管理系统设计源码
- 基于Python核心的求职招聘系统全栈设计源码
- 基于Java语言的北京气象灾害预警平台邮件通知系统设计源码