Home  >  Article  >  Backend Development  >  在php中设置session用memcache来存储的方法总结_php实例

在php中设置session用memcache来存储的方法总结_php实例

WBOY
WBOYOriginal
2016-06-07 17:09:45675browse

memcached提供了一个自定义的session处理器可以被用于存储用户session数据到memcached服务端。一个完全独立的memcached实例将会在内部使用,因此如果需要您可以设置一个不同的服务器池。session的key被存储在前缀memc.sess.key.之下,因此, 如果你对session和通常的缓存使用了同样的服务器池,请注意这一点。译注:另外一个session和通常缓存分离的原因是当通常的缓存占满了memcached服务端后,可能会导致你的session被从缓存中踢除,导致用户莫名的掉线。

session.save_handler string

设置为memcached开启memcached的session处理器。

session.save_path string

定义一个逗号分隔的hostname:port样式的session缓存服务器池,例如: "sess1:11211, sess2:11211".

方法I: 在 php.ini 中全局设置

session.save_handler = memcache 
session.save_path = "tcp://127.0.0.1:11211" 

方法II: 某个目录下的 .htaccess

php_value session.save_handler "memcache" 
php_value session.save_path "tcp://127.0.0.1:11211" 

方法III: 再或者在某个一个应用中

ini_set("session.save_handler", "memcache"); 
ini_set("session.save_path", "tcp://...:"); 

使用多个 memcached server 时用逗号","隔开,并且和 Memcache::addServer() 文档中说明的一样,可以带额外的参数"persistent"、"weight"、"timeout"、"retry_interval" 等等,类似这样的:"tcp://host1:port1?persistent=1&weight=2,tcp://host2:port2" 。

如果安装的PECL是memcached(依赖libmemcached库的那个扩展),则配置应为

ini_set("session.save_handler", "memcached"); // 是memcached不是memcache 
ini_set("session.save_path", "127.0.0.1:11211"); // 不要tcp:[/b]

代码例子(不依赖libmemcached库的那个)

<?php 
session_start(); 
if (!isset($_SESSION['TEST'])) { 
$_SESSION['TEST'] = time(); 
} 
$_SESSION['TEST'] = time(); 
print $_SESSION['TEST']; 
print "

"; print $_SESSION['TEST']; print "

"; print session_id(); ?>

用 sessionid 去 memcached 里查询一下:

<?php 
$memcache = memcache_connect('localhost', ); 
var_dump($memcache->get('ccedecbceebe')); 
$memcache->set('aaaa', 'hello everyone'); 
var_dump($memcache->get('aaaa')); 
?>

会看到

string(37) "TEST|i:1177556731;TEST3|i:1177556881;"

这样的输出,证明 session 正常工作。

下面通过两种用法实例给大家介绍下php中使用memcached来存储session

一、

ini_set("session.save_handler", "memcache");
ini_set("session.save_path","tcp://127.0.0.1:11211");

多个memcached

ini_set("session.save_path","tcp://127.0.0.1:11211,tcp://127.0.0.1:11211");

二、

ini_set("session.save_handler", "memcached");
ini_set("session.save_path","...:");

多个memcached

ini_set("session.save_path","127.0.0.1:11211,127.0.0.1:11211");
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn