opcache php 原理_每日来一发之OPcache

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

参考资料

[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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值