美文网首页
PHP缓存之Opcode缓存

PHP缓存之Opcode缓存

作者: 人在码途 | 来源:发表于2017-02-13 22:09 被阅读123次

PHP缓存之Opcode缓存


1. 什么是Opcode缓存?

当解释器完成对脚本代码的分析后,便将他们声称可以直接运行的中间代码,也成为操作码(Operate Code, Opcode)。Opcode cache的目的是避免重复编译,减少CPU和内存的开销。但是一般动态网站的性能瓶颈都在IO操作以及数据库操作,那么Opcode缓存能够带来的优化效果是有限的。

2. Opcode缓存的原理是什么?

当请求PHP脚本时,会经历以下几个过程:   img

Zend引擎从文件系统读取文件、扫面器词典和表达式、解析文件、创建要执行的计算机代码(Opcode),最后执行Opcode。每一次请求都会执行以上步骤,如果我们的PHP没有变化,纳闷Opcode也应该是没有变化的,所以不必要每次都重新生成Opcode。根据这个原理,我们可以把Opcode缓存下来,再次访问相同文件时,可以直接从Opcode执行文件,启用Opcode后文件的执行流程如下:

img

3. 有哪些PHP Opcode缓存插件?

Optimizer+(Optimizer+于2013年3月中旬改名为Opcache,PHP 5.5集成Opcache,其他的会不会消失?)、eAccelerator、xcache、APC …

4. 使用APC实现Opcode缓存

APC提供两种缓存功能,即缓存Opcode(目标文件),我们称之为apc_compiler_cache。同时它还提供一些接口用于PHP开发人员将用户数据驻留在内存中,我们称之为apc_user_cache。我们这里主要讨论apc_compiler_cache的配置。
下载地址:http://pecl.php.net/package/APC
最新版本为APC-3.1.6.tgz

wget http://pecl.php.net/get/APC-3.1.6.tgz
tar -zxvf APC-3.1.6.tgz
cd APC-3.1.6
/home/ad/php/bin/phpize
./configure --enable-apc --enable-apc-mmap  --with-php-config=/home/ad/php/bin/php-config
make
make install

编辑php.ini,添加apc的配置

[apc]
extension=apc.so
apc.enabled=1
apc.shm_segments = 1
apc.shm_size = 128
apc.ttl = 0
apc.user_ttl = 7200
apc.num_files_hint = 1000
apc.write_lock=1
apc.stat = 0
apc.max_file_size=1M
apc.filters = a.php,b.php
apc.cache_by_default=1

配置说明:

apc.enabled 开启apc 设置为0关闭,1为开启
apc.shm_segments 共享内存块数
apc.shm_size 共享内存大小,但是是M
那么显然共享内存的总数就是apc.shm_segments*apc.shm_size
apc.num_files_hint 允许多少个opcode被缓存
apc.stat 为1的时候会自动检查opcode对应的php文件是否有更新,有更新的话会自动更新。设置为0的话就不会去检查了这样会提高apc的效率,但是要使php的修改生效的话就必须重启apache了,或者使用函数apc_cache_clear()来清空缓存
apc.ttl opcode缓存的过期时间,设置为0表示不过期,如果不为0会检查两次请求之间的时间,如果时间大于设置值那么会更新opcode缓存
apc.write_lock 表示多个进程同时更新一份opcode缓存的时候那么只让最先的一个生效,可以有效避免写冲突
apc.max_file_size 超过设置值大小的文件不被缓存
apc.filters 需要特例的文件,多个文件用逗号(,)相隔
apc.filters 与 apc.cache_by_default结合使用,
当apc.cache_by_default为1时apc.filters文件不被缓存,当apc.cache_by_default为0时仅apc.filters文件被缓存

本文参考:

http://www.cnblogs.com/JohnABC/p/4531029.html

http://www.cnblogs.com/Alight/p/5257560.html

相关文章

  • PHP缓存之Opcode缓存

    PHP缓存之Opcode缓存 1. 什么是Opcode缓存? 当解释器完成对脚本代码的分析后,便将他们声称可以直接...

  • 大型项目优化的方向

    代码优化 ①开启opcode缓存,减少额外CPU和内存开销,加快代码运行速度(见文档《Opcode缓存》)②重模型...

  • Opcode缓存

    PHP项目执行流程 【简单理解】读取源码 -》 词法分析 -》 创建opcode -》 执行opcode 重复创...

  • Opcode 缓存

    1.什么是opcode 解释器分析代码之后,生成可以直接运行的中间代码,就称做操作码,opcode 目的:将生成的...

  • 开启opcache缓存

    Zend OPcache通过opcode缓存和优化提供更快的PHP执行过程。它将预编译的脚本文件存储在共享内存中供...

  • php内存缓存实现程序代码

    php内存缓存实现程序代码 1、普遍缓存技术:数据缓存:这里所说的数据缓存是指数据库查询PHP缓存机制,每次访问页...

  • PHP-深入理解Opcode缓存

    1.什么是opcode缓存? 当解释器完成对脚本代码的分析后,便将它们生成可以直接运行的中间代码,也称为操作码(O...

  • laravel 后台模板 View [admin.login]

    1、清除应用程序缓存 php artisan cache:clear2、清除清除路由缓存缓存 php artisa...

  • Laravel优化缓存

    说明 配置信息缓存 php artisan config:cache 路由缓存 php artisan route...

  • laravel框架学习-缓存,事件

    缓存配置:app/config/cache.php 缓存:增加缓存项: Cache::put( 'key', 'v...

网友评论

      本文标题:PHP缓存之Opcode缓存

      本文链接:https://www.haomeiwen.com/subject/rvitwttx.html