php apcu安装、和使用方法以及会遇到的问题解答

bloger 2019-11-27 PM 2627℃ 2条

APCu是剥离了操作码缓存的APC。

第一个APCu代码库的​​版本为4.0.0,当时是从APC主分支的头派生的。

从APCu 5.0.0开始提供PHP 7支持。

APCu可以提供兼容模式,从而可以减少对APC适用部件的替换。

说白了就是apc的进化版。

如果需要了解apc的请参考以下链接

https://www.php.net/manual/zh/intro.apc.php

| Windos开发环境下如何安装Apcu:

  • 下载dll文件,以下链接可以找到对应PHP版本的dll文件,将下载好的文件放到php/ext目录下。

https://pecl.php.net/package/apcu

  • 常用的版本下载参考地址[php7.0,php7.1,php7.2]

https://pecl.php.net/package/APCu/5.1.13/windows

QQ截图20191127162401.jpg

ps:一定要注意自己环境,Architecture的版本是x86 还是64 ,是nts还是nt,可以使用phpinfo()查看

QQ截图20191127182759.jpg

| 修改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扩展。

QQ截图20191127181615.jpg

分享一个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;

结果如下图:
QQ截图20191127183208.jpg

ps:apcu 在没有安装扩展的情况下不会导致程序报错, 在cli命令下无效!至于原因在后面来讲。

标签: apcu

非特殊说明,本博所有文章均为博主原创。

评论啦~



已有 2 条评论


  1. T0eKaemeTeam
    T0eKaemeTeam

    0Kee

    回复 2020-12-23 12:40
  2. T0eKaemeTeam
    T0eKaemeTeam

    0Kee

    回复 2020-12-23 12:40
  3. T0eKaemeTeam
    T0eKaemeTeam

    0Kee

    回复 2020-12-23 12:40