Home >php教程 >php手册 >PHP中使用memcache存储session的三种配置方法

PHP中使用memcache存储session的三种配置方法

WBOY
WBOYOriginal
2016-06-13 09:39:42942browse

 下面简单说下PHP项目分布式部署中,SESSION的同步方案中的一种,使用Memcache来存储SESSION。并总结了三种配置方式,需要的朋友可以参考下

 

1、直接修改php.ini配置文件 

代码如下:

session.save_handler = memcache //设置session的储存方式为memcache 

memcache.hash_strategy = "consistent"//设置memcache的hash算法 

session.save_path = "tcp://127.0.0.100:11211" //设置session储存的位置,多台memcache用逗号隔开,例如:tcp://127.0.0.1:11211,tcp://127.0.0.1:12000 

 

2、利用目录下的 .htaccess 文件配置 

代码如下:

php_value session.save_handler "memcache" 

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

 

说明:这个只是针对Apache的,目前使用Nginx的比较多,也不推荐此方式。 

 

3、在项目的PHP文件中修改配置 

复制代码 代码如下:ini_set("session.save_handler", "memcache"); 

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

 

4、测试例子 

 代码如下:

//测试session读取是否正常 

session_start(); 

$_SESSION['username'] = "jb51.net"; 

echo session_id(); 

 

//从Memcache中读取session 

$m = new Memcache(); 

$m->connect('localhost', 11211); 

//或者这样 

//$mem->addServer("127.0.0.1", 11211) or die ("Can't add Memcache server 127.0.0.1:12000"); 

 

//根据session_id获取数据 

 

//本机 

//$session = $m->get(session_id()); //session_id:d527b6f983bd5e941f9fff318a31206b 

 

//另一台服务器,已知session id 

$session = $m->get("d527b6f983bd5e941f9fff318a31206b"); 

 

echo $session."
"; //会得到这样的数据:username|s:16:"pandao";,解析一下就可以得到相应的值了 

echo session_id()."
"; 

exit; 

 

 

 

上面只是一些简单的说明,其实说点题外话,一般来说,做分布式,那肯定是有服务器权限的,所以推荐第一种。

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