PHP的OpCache扩展(编译加速)

预编译

OpCache【官方给的解释是:用于加速PHP脚本!】

opcache适用的场景

注意事项

不建议在开发过程中开启Opcache
因为开启了Opcache之后
开发人员修改的内容不会立即显示和生效
因为受到opcache.revalidate_freq=60的影响
所以建议在开发并测试之后,测试性能时再行打开测试

Opacche的安装与使用

安装

PHP版本低于7.0的,可以去http://pecl.php.net/package/ZendOpcache 根据自己的PHP版

本下载相应的opcache版本。比如PHP5.5:http://pecl.php.net/get/zendopcache-7.0.5.tgz
解压
tar -zxvf zendopcache-7.0.5.tgz
进入文件
cd zendopcache-7.0.5

phpize

./configure --with-php-config=/usr/local/php/bin/php-config
make
安装
make install

这是会在php的扩展文件夹内生成opcache.so

PHP7.0之后自带opcache.so无需安装

使用

在php.ini加入zend_extension=opcache.so;

配置

关于opcache的详细参数配置比较核心的参数如下:

opcache扩展位置

zend_extension=opcache.so

启用opcache

opcache.enable=1

使用共享内存大小

opcache.memory_consumption=200

字符串缓存大小

opcache.interned_strings_buffer=8

最大缓存文件数量

opcache.max_accelerated_files=8000

出现异常,立即释放全部内存

opcache.fast_shutdown=1

最大允许占用内存百分比,超过此限制会重启进程

opcache.max_wasted_percentage=20

如果置为1,则将当前路径加入到文件key中,以避免可能产生的同文件名的文件key冲突

opcache.use_cwd=1

文件检测周期

revalidate_freq=3600

启用文件缓存时间戳

opcache.validate_timestamps=1

加速原理

opcache 为什么会加快php的效率。

php 属于解释型语言,每次执行都要经过解释器来进行翻译 形成字节码,而应该程序定型了之后基本是就不会进行变化的。

而opcache就把这个内容缓存到内存中。降低了重复没有必要的劳动,进行减负

第一次编译后的结果进行了缓存,后面不需要再编译

优点:

大幅度减少CPU和内存开销

下面是使用前后对比(执行sql查询对比)

开启前的运行速度是(5个):

0.027321s
0.025986s
0.027265s
0.028155s
0.026983s

开启后

0.006425s
0.005698s
0.005267s
0.006181s
0.006023s

这还用说嘛?opcache不得飞起吗宝贝?

为您推荐

评论已关闭