一个基于laravel框架的项目,运行总感觉有点慢,在了解完PHP7的新特性后,有一点点收获那就是--Zend Opcache(字节码缓存),那么它到底是什么呢?
一起来了解了解:
首先,它为什么叫字节码缓存?
PHP是解释型语言,构建在Zend 虚拟机之上,PHP解释器在执行PHP脚本时会解析PHP脚本代码,把PHP代码编译成一系列Zend操作码,由于每个操作码都是一个字节长,所以又叫字节码,字节码可以直接被Zend虚拟机执行,然后执行字节码。
那它有什么作用?
首先,我们先来了解一下PHP文件从请求到执行的这个过程,每次HTTP请求都必须不断解析、编译和执行PHP脚本,这样的话,每次请求相同的请求,仍然会消耗更多的资源。若是同样的请求我们将他编译的字节码缓存起来,那么,岂不是
会更快,这样的话,字节码缓存能存储预先编译好的PHP字节码,这样,下次请求PHP脚本时,PHP解释器不用每次读取、
解析和编译PHP代码,直接从内存中读取预先编译好的字节码,然后立即执行,这样能省很多时间,极大提升应用的性能。
怎样安装呢?
linux环境下下载:
wget http:
//pecl
.php.net
/get/zendopcache-7
.0.2.tgz
tar
zxvf zendopcache-7.0.2.tgz
cd
zendopcache-7.0.2
/usr/local/php/bin/phpize
.
/configure
--with-php-config=
/usr/local/php/bin/php-config
make
&&
make
install
ls
/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/
[Zend Opcache]
zend_extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/opcache.so
opcache.memory_consumption=64
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.force_restart_timeout=180
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
对于上面opcache的各项选项介绍,请参考:http://www.php.net/manual/zh/opcache.configuration.php
重启php,通过 phpinfo(); 或者linux 命令行PHP -i 查看php 配置