APCu是剥离了操作码缓存的APC。
第一个APCu代码库的版本为4.0.0,当时是从APC主分支的头派生的。
从APCu 5.0.0开始提供PHP 7支持。
APCu可以提供兼容模式,从而可以减少对APC适用部件的替换。
说白了就是apc的进化版。
如果需要了解apc的请参考以下链接
| Windos开发环境下如何安装Apcu:下载dll文件,以下链接可以找到对应PHP版本的dll文件,将下载好的文件放到php/ext目录下。常用的版本下载参考地址[php7.0,php7.1,php7.2]
ps:一定要注意自己环境,Architecture的版本是x86 还是64 ,是nts还是nt,可以使用phpinfo()查看
| 修改PHP配置文件
[apcu]
extension=php_apcu.dll
apc.enabled=1
apc.shm_size=64M
apc.ttl=7200
apc.enable_cli=1
apc.serializer=php
| 重启apache,nginx,php-fpm
查看phpinfo(),是否有apcu扩展。
分享一个apcu类库,自己改造一下:<?php
/**
* User: tangyijun
* Date: 2019-09-29
* Time: 14:53
*/
namespace Libs\Apcu;
use Libs\Cache\Cache;
class Apcu extends Cache
{
public function get( $key ) {
if ( !function_exists('apcu_fetch') ) return;
$data = apcu_fetch( $key );
return $data;
}
/**
* @param $key
* @param $data
* @param int $ttl 有效期,默认永久
* @return array|bool|void
*/
public function set( $key, $data, $ttl = 0 ) {
if ( !function_exists('apcu_store') ) return;
return apcu_store( $key, $data, $ttl );
}
/**
* @return bool|void
*/
public function reset(){
if ( !function_exists('apcu_clear_cache') ) return;
return apcu_clear_cache();
}
/**
* @param $key
* @return bool|string[]|void
*/
public function delete($key) {
if ( !function_exists('apcu_delete') ) return;
return apcu_delete($key);
}
}
调用:$a = \Libs\Apcu\Apcu::getInstance()->set('aaaa',112333);
$b = \Libs\Apcu\Apcu::getInstance()->get('aaaa');
var_dump($b);exit;
结果如下图:
ps:apcu 在没有安装扩展的情况下不会导致程序报错, 在cli命令下无效!至于原因在后面来讲。