热搜词
发表于 2019-10-9 09:24:31 | 显示全部楼层 |阅读模式
简介
    字节码缓存不是php的新特性,有很多独立性的扩展可以实现缓存,比如PHP Cache(APC),eAccelerator,ionCube和XCache等等。但是到目前为止,这些独立的扩展并没有集成到php核心当中。所有在php5.5.0之后,php内置了字节码缓存功能,叫做Zend Opcache。
zend Opcache前身是Zend Optimizer +,在03年改名Opcache,通过opcode缓存和优化提供更快的PHP执行过程。他会将预编译后的php文件存储在共享内存中以供以后的使用,避免从磁盘读取文件在进行解释的重复过程,减少时间和内存的消耗。在php5.5中及之后的版本中自带了zend opcache模块扩展,但是需要使用时需要我们开启和配置。在php5.2- 5.4版本我们也可以使用Opcache,但是需要我们自行安装。

什么是操作码缓存
    那么什么是字节码缓存呢?php是一门解释型的语言,php解释器执行php脚本时会解析php脚本代码,将php脚本代码编译成一系列可以直接运行的中间代码,也称为操作码(Operate Code,opcode)。然后执行这些操作码.
    每次请求php文件都是这样,所以会消耗很多资源,如果每次http请求php都必须解析,编译和运行脚本,消耗的资源将会更多。Opcode cache 的目地是避免重复编译,减少 CPU 和内存开销。需要注意的是如果动态内容的性能瓶颈不在于 CPU 和内存,而在于 I/O 操作,比如数据库查询带来的磁盘 I/O 开销,那么 opcode cache 的性能提升是非常有限的.
  现代操作码缓存器(Optimizer+,APC2.0+,其他)使用共享内存进行存储,并且可以直接从中执行文件,而不用在执行前“反序列化”代码。这将带来显着的性能加速,通常降低了整体服务器的内存消耗,而且很少有缺点.

安装(php5.5.0以上跳过)
  在PHP 5.5.0及之后版本中,PHP已经将Opcache功能以拓展形式内嵌在发布版本中了,默认未开启Opcache加速,需要我们手动开启。对于之前的老版本,可以将Opcache作为PECL拓展库进行安装和配置。


linux下的安装
源码安装
wget http://pecl.php.net/get/zendopcache-7.0.5.tgztar zxvf zendopcache-7.0.5.tgzcd zendopcache-7.0.5/path/to/php/bin/phpize./configure --with-php-config=/path/to/php/bin/php-configmake && make install

在php.ini下的[php]添加如下配置:

zend_extension=php_opcache.so

在php.ini的[opcache]下添加:

opcache.memory_consumption=128opcache.interned_strings_buffer=8opcache.max_accelerated_files=4000opcache.revalidate_freq=60opcache.fast_shutdown=1opcache.enable_cli=1

pecl 版本安装
yum install php-pecl-zendopcache
安装时产生的 opcache 的配置文件位于默认的 /etc/php.d 目录中:
opcache-default.blacklist opcache.ini
修改该配置:
vi /etc/php.d/opcache.ini  
对照修改:
opcache.memory_consumption=128opcache.interned_strings_buffer=8opcache.max_accelerated_files=4000opcache.revalidate_freq=60opcache.fast_shutdown=1opcache.enable_cli=1
不需要修改php.ini,重启apache服务.



全部评论0
回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|管理员之家 ( 苏ICP备2023053177号-2 )

GMT+8, 2024-12-23 10:20 , Processed in 0.158476 second(s), 22 queries .

Powered by Discuz! X3.5

Cpoyright © 2001-2024 Discuz! Team