0
点赞
收藏
分享

微信扫一扫

php opcache工作原理简要描述

勇敢的趙迦禾 2022-03-11 阅读 54

当一个php文件被引用(require/include)执行时,如果有开启opcache,则首先查看opcache中是否有缓存该文件对应的opcode缓存,这样免除重新生成opcode的过程,也减少了一次磁盘IO。其实opcache缓存就是类似redis的k/v缓存,k是php脚本的绝对路径,value是该php脚本对应的opcode相关的缓存项信息。

其实php提供了一个方法,可以查看opcache当前命中率和共享内存使用情况等, opcache_get_status(), 可以在生成环境中创建一个php文件,通过web访问,观察命中率等情况, 从而对opcache做进一步优化。

对于共享内存,实现方式有4种,但是应用程序中,最常用的为两种:

1、System V共享内存(通过linux ipcs命令可以查看)

2、Posix 共享内存。(如果是有mmap映射文件,一般在/dev/shm 文件夹中)

具体的这两种介绍可以查阅相关资料。

opcache所使用的共享内存到底是什么呢?通过翻源码,定位到核心位置:

php-7.x/sapi/fpm/fpm_shm.c文件中关键行:

22   mem = mmap(0, size, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_SAHRED, -1, 0);
举报

相关推荐

0 条评论