「Php/Smarty/MemcacheクラスSmarty3」の版間の差分

提供: 初心者エンジニアの簡易メモ
ナビゲーションに移動 検索に移動
ページの作成:「<pre> class Smarty_CacheResource_Memcache extends Smarty_CacheResource_Custom { private $_m; public function __construct($memcache) { $this->_m = $me...」
 
編集の要約なし
52行目: 52行目:
     }
     }
}
}
</pre>
呼び出し
<pre>
require_once APPLICATION_PATH . '/models/MemcacheModel.php';
$cache = MemcacheModel::getInstance();
require_once APPLICATION_PATH . '/../library/Smarty_CacheResource_Memcache.php';
$this->registerCacheResource(
    'memcache',
    new Smarty_CacheResource_Memcache($cache)
);
</pre>
</pre>

2026年4月2日 (木) 06:56時点における版

class Smarty_CacheResource_Memcache extends Smarty_CacheResource_Custom
{
    private $_m;

    public function __construct($memcache)
    {
        $this->_m = $memcache;
    }

    protected function fetch($id, $name, $cache_id, $compile_id, &$content, &$mtime)
    {
        $key = md5($name . $cache_id . $compile_id);

        $data = $this->_m->getCache($key);

        if ($data === false) {
            return false;
        }

        if (function_exists('gzuncompress')) {
            $content = gzuncompress($data);
        } else {
            $content = $data;
        }

        $mtime = time();

        return true;
    }

    protected function save($id, $name, $cache_id, $compile_id, $content, $mtime)
    {
        $key = md5($name . $cache_id . $compile_id);

        if (function_exists('gzcompress')) {
            $content = gzcompress($content);
        }

        return $this->_m->setCache($key, $content);
    }

    protected function delete($name, $cache_id, $compile_id, $exp_time)
    {
        $key = md5($name . $cache_id . $compile_id);
        return $this->_m->delCache($key);
    }

    protected function purge()
    {
        return true;
    }
}

呼び出し

require_once APPLICATION_PATH . '/models/MemcacheModel.php';
$cache = MemcacheModel::getInstance();
require_once APPLICATION_PATH . '/../library/Smarty_CacheResource_Memcache.php';
$this->registerCacheResource(
    'memcache',
    new Smarty_CacheResource_Memcache($cache)
);