apcu

APCu 是老牌 PHP 字节码和对象缓存 缓存器 APC 的分支,具体由来还得讲个故事。



首先提一下,PHP 如果公用多个缓存器是会冲突的,例如同样都是字节码缓存器,OPcache 和 eAccelerate 同时安装就会起冲突甚至报错;而 XCache 同时有字节码缓存器和对象缓存,和 OPCache 共存也是会起冲突的。



在 PHP 5.5 之前是没有 OPcache 这个缓存器的,因而 PHP 下有 eAccelerate、XCache、APC 等几大著名的缓存器,后来 Zend 官方开发了 PHP 的字节码缓存器并且拥有极佳的性能表现在 PHP7 上更是不可或缺的存在。因为单纯只有 字节码 缓存器的 eAccelerate 便落寞了。而 XCahe 还是有更新但是在 PHP7 发布后还是停滞出新了很久。



而 APC 本来拥有 字节码缓存和对象缓存,后来便删除了字节码缓存。又将原有的系统缓存和用户缓存删去了系统缓存,保留了拥护缓存,因此 APCu = APC User 便是这么来的。从此 APCu 可以在 PHP7 下继续稳定存在,并且不起冲突。

软件源安装
如果是通过系统软件库安装的朋友,可以添加在 remi 、dotdeb、ppa 等软件源来通过 yum/dnf 或者 apt-get 安装 php7 和 apcu



因为 remi 、dotdeb、ppa 几乎都有多个 PHP 可以安装,所以我们可以通过搜索来判断自己需要安装的软件名称。



例如 CentOS:



yum search apcu
看哪一个的 apcu 版本是大于 5.1.0 的就选择哪个进行安装。



编译安装



wget http://pecl.php.net/get/apcu-5.1.3.tgz
tar xzf apcu-5.1.3.tgz
cd apcu-5.1.3
phpize
./configure –with-php-config=/usr/local/php/bin/php-config
make & make install
大致安装流程是如此,不同安装环境其中的 –with-php-config=/usr/local/php/bin/php-config 文件地址不同哟!



然后在 php.ini 文件中添加,相关的 acpu.so 即可!



[apc]
extension = apcu.so
apc.enabled= on
apc.shm_size= 256M
apc.enable_cli = on #测试环境启用
兼容性
因为 APCu 5.1.0 开始,不再使用 apc_ 相关语句来识别了,而使用 apcu_ 但是一些软件并没有跟进,所以我们还需要 apcu_bc 来兼容旧的的语句



 APC(Alternative PHP Cache)是一个PHP缓存。



  注意:你不能在一天服务器上同时安装APC和Zend Optimiser,二者只能选其一。
  
  php apc 来缓存php解释器解析



php产生的 opcode, 哈哈。纯属个人的瞎理解,如有错误,请大家指出, 不甚感激。



  还有一部分是 data cache, (key / value map ), 也就是数据缓存, 这点类似于 memerched 和 redis 缓存, 用来存储数据, 将数据库或者文件中的数据暂时缓存起来。以



提高访问速度。



APC的介绍



The Alternative PHP Cache (APC) is a free and open opcode cache for PHP. Its goal is to provide a free, open, and robust framework for caching and optimizing PHP intermediate code.



但是据我查的资料, apc 由于严重的bug ,php官方已经废弃了。 出现了一个 apcu , apcu的接口和apc 是一样的。



这里是一篇介绍的文章,非常不错 https://www.devside.net/wamp-server/installing-apc-for-php-5-5



这篇文章也是相当的好,大家有时间可以看看:https://support.cloud.engineyard.com/hc/en-us/articles/205411888-PHP-Performance-I-Everything-You-Need-to-Know-About-OpCode-Caches



下面是我自己写的测试代码: 注意, 用了一段时间后可能要清除一下缓存,否则会有效率问题, 方法:apc_clear_cache();



<?php



apc_store(‘name’, ‘ysr’);



$name = apc_fetch(‘name’);



var_dump($name);



常用APC设置



配置 描述
apc.cache_by_default 默认启用缓存。1表示“启用”,0表示“禁用”
apc.filters 根据逗号分隔的POSIX正则表达式判断文件需要缓存还是不需要缓存。以a+开头的正则表达式将强制APC不缓存与此正则表达式匹配的任何文件。以a-开头的正则表达式将强制APC缓存与此正则表达式匹配的任何文件
apc.stat 启用或禁用APC对于所有请求PHP脚本是否有更改的检查。每次调用脚本时均会执行此过程。如果禁用该设置,在对PHP脚本进行任意更改后均需要重新启动WEB服务器以清除缓存并更改脚本内容。0=禁用,1=启用,默认1
apc.enabled 启用或禁用APC缓存。0=禁用,1=启用,默认1
apc.shm_size 设置APC允许使用的共享内存大小,此值以兆字节为单位
apc.shm_segments 设置可用的共享内存段总数
apc.include_once_override 启用或禁用include_once和require_once的优化。启用该设置时,可减少php内部函数进行的额外系统调用。0=禁用,1=启用,默认0
apc.optimization 设置优化级别。0=禁用优化功能
apc.num_files_hint 设置你认为需要缓存的文件数。默认值1000,如果不确定文件数,可以设置0
apc.ttl 设置文件存储在缓存中的过期时间,以秒为单位。
apc.write_lock 开启该设置将强制单个进程缓存特定的脚步。适用于必须缓存多个文件的大流量WEB服务器或应用程序
php.ini配置示例
extension=php_apcu.dll
apc.enabled=1
apc.shm_size=128M
apc.ttl=7200
apc.user_ttl=7200
apc.enable_cli=1
如何使用
apcu_add -数据存储中缓存的新变



apcu_cache_info -检索缓存的信息从APCu的数据存储 获取数据存储列表(不会返回value),只有定义值的信息



apcu_cas更新旧值和新值



apcu_clear_cache -清除缓存的



apcu_dec -减少存储的值(必须数值型)



apcu_delete -删除存储变量从缓存



apcu_entry -自动读取或生成一个缓存条目



apcu_exists -检查项目存在



apcu_fetch从缓存取存储变量



apcu_inc增加存储的值(必须数值型)



apcu_sma_info -检索高招共享内存分配信息



apcu_store -数据存储区中的缓存变量
other
缓存技术目前常用的为redis和memcache,但是acpc速度更快



tp框架自带的缓存模块,可以使用多种驱动,包括file、memcache、wincache、sqlite、redis和xcache,默认为文件缓存



Category php