Zend Opcache 是鸟哥写的一个PHP中间字节码opcode缓存拓展,后来被纳入到官方的版本中。PHP在执行执行的过程中,会先去解析PHP代码,生成opcode,然后Zend引擎读取opcode解释并且执行。为了解决每次都重复生成opcode,因此通过这个方案来缓存opcode。
Zend Opcache 是PHP 5.5+ 自带的, 大家知道目前PHP的缓存插件一般有三个:APC、eAccelerator、XCache,但未来它们可能都会消失,因为PHP 5.5已经集成Zend Opcache,功能和前三者相似但有一些不同(例如apc还带了用户内存操作的功能),缓存速度据说比它们更快一些。
这几个PHP加速插件的主要原理都相同,就是把PHP执行后的数据缓冲到内存中从而避免重复的编译过程,能够直接使用缓冲区已编译的代码从而提高速度,降低服务器负载,不过会增加一些内存的消耗。一些PHP框架,代码模块很多,涉及几十个文件,如果每次都重复编译opcode的话,消耗太大。使用之后,效率会明显提升。
Zend Opcache 已经集成在了PHP 5.5+里面,编译安装PHP5.5的时候加上–enable-opcache就行了,这样自动在extension的目录中生成opcache.so。
以下为 安装扩展实例:
但也支持低版本的 PHP 的安装方法:
依次执行下面的命令
wget http://pecl.php.net/get/zendopcache-7.0.4.tgz
tar xzf zendopcache-7.0.4.tgz
cd zendopcache-7.0.4
/usr/local/php/bin/phpize
如果找不到phpize 的话自己找PHP路径,我的在/usr/local/php/bin/phpize,下面这行也要按你的php.ini路径自行修改
/configure –with-php-config=/usr/local/php/bin/php-config
make && make install
(假如你的服务器上安装了多个版本php,那么需要告诉phpize要建立基于哪个版本的扩展。通过使用--with-php-config=指定你使用哪个php版本)
打开php.ini 在最下面添加如下几行
zend_extension=opcache.so
opcache.memory_consumption=128 //共享内存大小, 这个根据你们的需求可调
opcache.interned_strings_buffer=8 //interned string的内存大小, 也可调
opcache.max_accelerated_files=4000 //最大缓存的文件数目
opcache.revalidate_freq=60 //60s检查一次文件更新
opcache.fast_shutdown=1 //打开快速关闭, 打开这个在PHP Request Shutdown的时候 会收内存的速度会提高
opcache.enable_cli=1