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

source: OpenPNE/branches/work/maruyama/prj_memcache/webapp/lib/OpenPNE/MemcacheSession.php @ 3686

Last change on this file since 3686 was 3686, checked in by maruyama, 14 years ago

memcacheセッション一部修正

File size: 1.5 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
7class OpenPNE_MemcacheSession
8{
9    /**
10     * @var Memcache
11     */
12    var $dsn;
13    var $memcache;
14
15    function OpenPNE_MemcacheSession($dsn)
16    {
17        $this->dsn = $dsn;
18        $this->memcache = new Memcache();
19    }
20
21    /**
22     * sess_nameを取得/変更する
23     *
24     * メンバ変数で値を保持できないようなので
25     * 仕方なくstatic変数で値を保持しておく
26     */
27    function sess_name($name = '')
28    {
29        static $sess_name;
30        if ($name) {
31            $sess_name = $name;
32        }
33        return $sess_name;
34    }
35
36    function open($save_path, $sess_name)
37    {
38        $this->sess_name($sess_name);
39       
40        $this->memcache->addServer($this->dsn['hostspec']);
41        $this->memcache->pconnect($this->dsn['hostspec']);
42       
43        return true;
44    }
45
46    function close()
47    {
48        return true;
49    }
50
51    function read($sess_id)
52    {
53        if ($res = $this->memcache->get($sess_id)) {
54            return $res;
55        }
56        return '';
57    }
58
59    function write($sess_id, $sess_data)
60    {
61        if (!$sess_id || !$sess_data) return false;
62
63        $session_life_time = ini_get("session.gc_maxlifetime");
64        return $this->memcache->set($sess_id, $sess_data, 0, $session_life_time);
65    }
66
67    function destroy($sess_id)
68    {
69        return $this->memcache->delete($sess_id);
70    }
71
72    function gc($maxlifetime)
73    {
74        return true;
75    }
76}
77
78?>
Note: See TracBrowser for help on using the repository browser.