注册 登陆

    2021-05-11 00:40:38yac应用

    您现在的位置是: 首页 >  php >  yac应用

    前面一张文章https://www.6kou.cn/article/article_id/770.html讲解了yac以及yac扩展的安装,来讲讲具体的项目中的应用


    应用场景及优势

    1. php进程之间共享一些简单的数据

    2. 高效的缓存一些页面结果,特别是一些静态页面,读大于写的页面

    3. yac是基于php扩展的,不需要像其他缓存那样转换为json存储,可以直接存储string、array、object


    具体代码应用

    <?php

    class cacheYac
    {
    private $yac;

    function __construct()
    {
    if (!class_exists('Yac')) {
    exit("还未安装yac拓展");
    }
    $this->yac = new Yac();
    }

    /**
    * desc 获取yac缓存
    */
    function get($name, $gz = false)
    {
    $value = $this->yac->get($name);
    if ($value) {
    $value = unserialize($value);

    if ($value ['time'] > time()) {
    $cachedata = unserialize($value['data']);
    if ($gz) {
    $cachedata = gzuncompress(base64_decode($value['data']));
    }
    unset($value);
    return $cachedata;

    } else {
    $this->yac->delete($name);
    return false;
    }
    } else {
    $value = false;
    }
    return $value;
    }

    /**
    * desc 设置yac缓存
    */
    function set($name, $value, $effective = 1800, $gz = false)
    {
    if (is_null($value)) {
    // 删除缓存
    return $this->yac->delete($name);
    } else {
    $data ['data'] = serialize($value);
    if ($gz) {
    $temp = gzcompress($value, 9);
    $data ['data'] = base64_encode($temp);
    }
    $data ['time'] = time() + $effective;
    $this->yac->set($name, serialize($data));
    return null;
    }
    }

    /**
    * desc 清除所有yac缓存
    */
    function clear()
    {
    return $this->yac->flush();
    }
    }


关键字词: yac应用,yac

0