ここの情報は古いです。ご理解頂いた上でお取り扱いください。

source: OpenPNE/branches/ebihara/prj_memcached/webapp/lib/Cache/Container/memcached.php @ 3182

Last change on this file since 3182 was 3182, checked in by ebihara, 13 years ago

memcachedに保存されたファンクションキャッシュを正常に参照できるようにした

File size: 1.7 KB
Line 
1<?php
2/**
3 * @copyright 2005-2007 OpenPNE Project
4 * @license   http://www.php.net/license/3_01.txt PHP License 3.01
5 */
6
7require_once 'Cache/Container.php';
8
9class Cache_Container_memcached extends Cache_Container
10{
11    /**
12     * Memcache Object
13     *
14     * @var object Memcache
15     */
16    var $memcached;
17
18    function Cache_Container_memcached($options)
19    {
20        $this->setOptions($options, $this->allowed_options);
21
22        $this->memcached = new Memcache;
23        $this->memcached->connect($options['hostname'], $options['port']);
24    }
25
26    function fetch($id, $group)
27    {
28        $cachedata = $this->memcached->get($id);
29
30        $unserialized = unserialize($this->decode($cachedata));
31        $expire = 0;  // ロード時のexpireは判定には用いない
32        $userdata = '';
33        $data = array($expire, $unserialized, $userdata);
34
35        return $data;
36    }
37
38    function save($id, $data, $expires, $group, $userdata)
39    {
40        $this->expires = $expires;
41        $serialized = $this->encode(serialize($data));
42        $res = $this->memcached->set($id, $serialized, 0, $expires);
43    }
44
45    function remove($id, $group)
46    {
47        return $this->memcached->delete($id);
48    }
49
50    function idExists($id, $group)
51    {
52        return (bool)$this->memcached->get($id);
53    }
54
55    function isExpired($id, $group, $max_age)
56    {
57        // memcachedはコール時に指定した時間で削除されるので、キャッシュ生存期間判定は不要
58        // よって、キャッシュが存在しているかどうかで生存期間内かどうかを判定
59        $is_cache_exists = $this->idExists($id, $group);
60       
61        if ($is_cache_exists) {
62            return false;
63        } else {
64            return true;
65        }
66    }
67
68}
69?>
Note: See TracBrowser for help on using the repository browser.