![a28d3bf19b5cae09b0952e92671a5f77.png](https://img-blog.csdnimg.cn/img_convert/a28d3bf19b5cae09b0952e92671a5f77.png)
OPcache
的来历
PHP
从版本 5.5 开始内建 Opcache
. 那么 Opcache
是用来干吗的? 在日常工作中发现, 其实很多人还是没有用到或者说是根据没有了解过. 今天的象背上的包裹推荐重点是了解 Opcache
是什么? 应该怎么用? Opcache
, 首先望文生义一下, 一个熟悉的单词 cache
, 这个大家都知道, 缓存的意思, 那 Opcache
合起来又是那门那派的?
这就需要说下历史了,Opcache
的前身是Optimizer+
, 它是PHP
的官方公司Zend
开发的一款闭源但可以免费使用的PHP
优化加速组件。Optimizer+
将 PHP 代码预编译生成的脚本文件Opcode
缓存在共享内存中供以后反复使用,从而避免了从磁盘读取代码再次编译的时间消耗。同时,它还应用了一些代码优化模式,使得代码执行更快。从而加速PHP
的执行。
Opcache
的工作原理:
将编译好的操作码 opcode
放入共享内存, 提供给其他进程访问.
何为操作码(opcode) :Zend
引擎对PHP
文件进行词法分析, 语法分析后, 生成语法树, 然后将语法树编译生成操作码, 即opcode
.
Opcache
的配置
这里不做过多介绍, 大家可以在文末脚注处复制查看OPcache最佳配置实践[1]
好了, 重点说完了, 这时会有人问了, 轮子造好了吗? 等的就是这句话, 本公众号就是干这个的, 专业找轮子二十年.
OPcache-Gui
一个提供可视化管理界面的轮子, 数据实时, 集缓存/重置与耗费资源信息于一体.
# 通过 composer 安装
composer require amnuts/opcache-gui
Laravel-Opcache
现在 PHP
开发圈中, Laravel
框架可谓是扛把子之一, 这个轮子就是为它量身打造的. 通过 artisan
进行管理, 当然, 同时也支持在代码中进行控制, 这样就可以集成到现有的后台管理中. 可谓活好身体构造好啊.
# 通过 composer 安装
composer require appstract/laravel-opcache
# 发布配置文件, 默认配置一般就可以了
php artisan vendor:publish --provider="AppstractOpcacheOpcacheServiceProvider" --tag="config"
# 清除已缓存的操作码
php artisan opcache:clear
# 显示 opcache 配置项
php artisan opcache:config
# 显示 opcache 当前状态, 是否启用
php artisan opcache:status
# 将配置文件中所配目录的PHP文件进行预编译
php artisan opcache:compile {--force}
这里官方仓库有一个提醒: 如果预编译的时候, 你的Opcache
没有启用dups_fix
, 则需要加上--force
参数, 若你在执行预编译的时候遇到 Cannot redeclare class 时, 则可以开启此项配置或者将造成冲突的类文件添加到包配置文件的排除列表.
今天是本号的第一次, 希望人少一些, 太多了支撑不住. (2020 版安慰)
好了, 今天象背上的包裹推荐告一段落, 如果你想了解某方面的轮子, 可以在公众号留言或者本文下评论, 那本号的第二次就是你的喽. (嘤嘤嘤)
另: 本方排版使用开源工具 Markdown-Nice[2], 感谢作者 mdnice[3].
![a1b4035cf6d5aa771bdcaaa84850c4e1.png](https://img-blog.csdnimg.cn/img_convert/a1b4035cf6d5aa771bdcaaa84850c4e1.png)
参考资料
[1]
OPcache配置最佳实践: https://gywbd.github.io/posts/2016/1/best-config-for-zend-opcache.html
[2]
Markdown-Nice: https://github.com/mdnice/markdown-nice
[3]
mdnice: https://github.com/mdnice