Php/Smarty/MemcacheクラスSmarty3

提供: 初心者エンジニアの簡易メモ
2026年4月2日 (木) 06:56時点におけるAdmin (トーク | 投稿記録)による版
ナビゲーションに移動 検索に移動
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)
);