通过session_set_save_handler()方法自定义Session写入Memcache
<span> 1</span> <?<span>php </span><span> 2</span> <span>class</span><span> MemSession{</span><span> 3</span> <span>private</span> <span>static</span> <span>$handler</span> = <span>null</span><span>;</span><span> 4</span> <span>private</span> <span>static</span> <span>$lifetime</span> = <span>null</span><span>;</span><span> 5</span> <span>private</span> <span>static</span> <span>$time</span> = <span>null</span><span>;</span><span> 6</span> <span>const</span> MS = 'session'<span>;</span><span> 7</span> <span> 8</span> <span>private</span> <span>static</span> <span>function</span> init(<span>$handler</span><span>){</span><span> 9</span> self::<span>$handler</span> = <span>$handler</span><span>;</span><span>10</span> self::<span>$lifetime</span> = <span>ini_get</span>('session.gc_maxlifetime'<span>);</span><span>11</span> self::<span>$time</span> = <span>time</span><span>();</span><span>12</span> <span> }</span><span>13</span> <span>14</span> <span>public</span> <span>static</span> <span>function</span> start(<span>$memcache</span><span>){</span><span>15</span> self::i<strong>+本文来源gao@daima#com搞(%代@#码网</strong><pre>搞代gaodaima码
nit($memcache);16 //调用类中的方法要用数组,__CLASS__代表本类17 session_set_save_handler(18 array(__CLASS__,’open’),19 array(__CLASS__,’close’),20 array(__CLASS__,’read’),21 array(__CLASS__,’write’),22 array(__CLASS__,’destroy’),23 array(__CLASS__,’gc’)24 );25 session_start();26 }27 28 public static function open($path,$name){29 30 }31 public static function close(){32 33 }34 35 public static function read($PHPSESSID){36 $val = self::$handler->get(self::session_key($PHPSESSID));37 38 if($val===false || $val==null){39 return false;40 }41 return $val;42 }43 public static function write($PHPSESSID,$data){44 $method = $data? ‘set’:’replace’;45 return self::$handler->$method(self::session_key($PHPSESSID),$data,MEMCACHE_COMPRESSED,self::$lifetime);46 }47 48 public static function destroy($PHPSESSID){49 return self::$handle->delete(self::session_key($PHPSESSID));50 }51 //memcache本身就有限定时间,数据自动销毁,所以可不使用gc方法52 public static function gc($lifetime){53 return true;54 }55 56 //给sessionID加前缀,避免key重复57 private static function session_key($PHPSESSID){58 $session_key = self::MS.$PHPSESSID;59 return $session_key;60 } 61 }62 $mem = new Memcache;63 $mem->connect(“localhost”,11211) or die(“could not connect”);64 MemSession::start($mem);
以上就介绍了将Session写入Memcache,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。