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

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 "<br><br>";
print $_SESSION['TEST'];
print "<br><br>";
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");
(0)

相关推荐

  • PHP扩展Memcache分布式部署方案

    基础环境 其实基于PHP扩展的Memcache客户端实际上早已经实现,而且非常稳定.先解释一些名词,Memcache是danga.com的一个开源项目,可以类比于MySQL这样的服务,而PHP扩展的Memcache实际上是连接Memcache的方式. 首先,进行Memcache被安装具体可查看博客里的其它几篇文章; 其次,进行PHP扩展的安装,官方地址是http://pecl.php.net/package/memcache 最后,启动Memcache服务,比如这样,通过不同端口启动多个进程模拟

  • PHP保存session到memcache服务器的方法

    本文实例讲述了PHP保存session到memcache服务器的方法.分享给大家供大家参考,具体如下: 传统的 session 是写入到服务器文件中,可以在 php.ini 中看出,清单如下 session.save_handler = files session.save_path = "sess保存路径" 但是,如果网站用户很多的话,session 的访问将势必影响网站的速度.因为文件的读取速度是很低的. 众所周知,memcache 作为内存缓存服务器,通过哈希算法,把数据以key

  • php模块memcache和memcached区别分析

    1.目前大多数php环境里使用的都是不带d的memcache版本,这个版本出的比较早,是一个原生版本,完全在php框架内开发的.与之对应的带d的memcached是建立在libmemcached的基础上,所以相对来说,memcached版本的功能更全一些. memcache:http://cn2.php.net/manual/en/book.memcache.php memcached:http://cn2.php.net/manual/en/book.memcached.php 2.Memca

  • 在Mac OS的PHP环境下安装配置MemCache的全过程解析

    安装服务端 memcache是项目名,而在服务端的驻留进程叫memcached(linux的守护进程一般都是在后面加个d).在OSX下使用brew可以快速安装memcache: $ sudo brew install memcached memcache的依赖:openssl和libevent会自动下载并安装. 安装完成后,使用如下命令启动: $ sudo memcached -m 32 -p 11211 -d 安装php扩展 使用php操作memcache前,需要安装php的扩展,php的扩展

  • PHP使用Memcache时模拟命名空间及缓存失效问题的解决

    缓存命名空间 memcache本身不支持命名空间,但是我们可以利用 memcache本身的机制,来模拟命名空间.比如:你要清除一组数据,就需要用到命名空间,来看这样一个例子,说明写在了注释里: class Action { public function index() { global $mc_wr; // 获取命名空间 $ns_key = $mc_wr->get("foo_namespace_key"); // 如果命名空间不存在,则设置一个 if($ns_key===fal

  • 在win系统安装配置 Memcached for PHP 5.3 图文教程

    如何在windows系统上让php支持memcached呢? 第一步:安装 Memcached 服务 第二步:让php加载memcached.dll扩展 以下资料参考: 1.Installing Memcached for PHP 5.3 on Windows 7 2.Windows 下Memcache安装配置 + 没有成功加载memcached 详情步骤如下: 第一步:安装 Memcached 服务 1.下载 Memcached Win32 (点我下载) 2.解压下载的文件到自定义目录,例如(

  • PHP实现的memcache环形队列类实例

    本文实例讲述了PHP实现的memcache环形队列类.分享给大家供大家参考.具体如下: 这里介绍了PHP实现的memcache环形队列类.没咋学过数据结构,因为业务需要,所以只是硬着头皮模拟的! 参考PHP memcache 队列代码.为使队列随时可入可出,且不受int长度越界危险(单链采取Head自增的话不作处理有越界可能),所以索性改写成环形队列.可能还有BUG,忘见谅! <?php /** * PHP memcache 环形队列类 * 原作者 LKK/lianq.net * 修改 FoxH

  • windows下安装php5.2.*,php5.3.*,php5.4.*版本的memcache扩展

    注:如使用集成环境成功率低,请自行配置php apache,表示win7下wamp php5.4.3基础上配置拓展,成功率极低.费时. 拓展安装调试方法: 编写调试php文件 <?php memcache(); 通过命令行执行测试,因为php拓展安装成功与否与apache无关,所以没必要不断重启apache去看phpinfo(); 另外发现当php拓展文件不匹配的时候,wamp不报错,用命令行执行的时候会报错. wamp下配置memcache表示很伤心. 1. 安装扩展最重要的一步就是下载正确的

  • PHP环境中Memcache的安装和使用

    Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力.它可以应对任意多个连接,使用非阻塞的网络IO.由于它的工作机制是在内存中开辟一块空间,然后建立一个HashTable,Memcached自管理这些HashTable.Memcache官方网站:http://www.danga.com/memcached,更多详细的信息可以来这里了解. 为什么会有Memcache和memcached两

  • php中memcache 基本操作实例

    php中memcache 基本操作实例 <!DOCTYPE html> <html> <head> <title>memcache demo</title> <meta http-equiv="content-type"content="text/html;chatset=utf-8"> </head> <body> <?php $server_ip = '127.

随机推荐