`
berrywu
  • 浏览: 125590 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

用 memcache 来存储 session

 
阅读更多

PECL :: Package :: memcache 2.1.1 版本的 Changelog 中有一条:

- Added experimental session storage support. You can use memcached as session storage.

也就是可以直接用 memcache 来作 PHP 的 session.save_handler。

1. 安装 memcached ,还是那套 ./configure; make; make install,注意 memcached 用 libevent 来作事件驱动,所以要先安装有 libevent。

2. 安装 pecl::memcache ,用 pecl 命令行工具安装:

pecl install memcache
或直接从源码安装:
phpize
 ./configure
 make
 make install

将 php.ini 中 extension=memcache.so 打开,重启一下 apache,查看 phpinfo 中的 "Registered save handlers" 会有 "files user memcache" 这3个可用。

3. 修改配置文件,在 php.ini 中全局设置:

session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211"
或者某个目录下的 .htaccess :
php_value session.save_handler "memcache"
php_value session.save_path  "tcp://127.0.0.1:11211" 
再或者在某个一个应用中:
ini_set("session.save_handler", "memcache");
ini_set("session.save_path", "tcp://127.0.0.1:11211"); 

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

4. 启动 memcached:

memcached -d -l 127.0.0.1 -p 11212 -m 128

5. 在程序中使用 memcache 来作 session 存储,用例子测试一下:

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

6. 用 sessionid 去 memcached 里查询一下:

<?php
$memcache = memcache_connect('localhost', 11211);
var_dump($memcache->get('19216821213c65cedec65b0883238c278eeb573e077'));
?>
会有看到
string(37) "TEST|i:1177556731;TEST3|i:1177556881;"

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

用 memcache 来存储 session 在读写速度上会比 files 时快很多,而且在多个服务器需要共用 session 时会比较方便,将这些服务器都配置成使用同一组 memcached 服务器就可以,减少了额外的工作量。缺点是 session 数据都保存在 memory 中,持久化方面有所欠缺,但对 session 数据来说也不是很大的问题。

另外,WS Memcached Session Handler for PHP 提供一种用 session_set_save_handler 来利用 memcached 的方法。

分享到:
评论

相关推荐

    Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法

    本文实例讲述了Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法。分享给大家供大家参考,具体如下: 1、首先安装memcache服务端: sudo apt-get install memcached 安装完成后系统 自动启动...

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

    1、直接修改php.ini配置文件 复制代码 ...//127.0.0.100:11211” //设置session储存的位置,多台memcache用逗号隔开,例如:tcp://127.0.0.1:11211,tcp://127.0.0.1:12000 2、利用目录下的 .htaccess 文件配置 复制代码

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

    memcached提供了一个自定义的session处理器可以被用于存储用户session数据到memcached服务端,下面通过本文给大家介绍在php中设置session用memcache来存储的方法总结,对php session memcache相关知识感兴趣的朋友...

    基于php使用memcache存储session的详解

    1.设置session用memcache来存储方法I: 在 php.ini 中全局设置session.save_handler = memcachesession.save_path = “tcp://127.0.0.1:11211”方法II: 某个目录下的 .htaccess :php_value session.save_handler ...

    PHP 实现多服务器session共享之memcache共享

    本文是 PHP实现多服务器session共享之NFS共享的延续,不过这次,我采用memcache来存储session了,memcache的安装请看这里: 搭建高效、可靠、稳定的WEB服务器

    PHP实现多服务器session共享之memcache共享

    本文是 PHP实现多服务器session共享之NFS共享的延续,不过这次,我采用memcache来存储session了,memcache的安装请看这里: 搭建高效、可靠、稳定的WEB服务器;

    采用memcache在web集群中实现session的同步会话

    使用memcache来同步session是还是不错的,当然也可以通过redis来保存session,可以php开启并将Session存储到Redis缓存,下面是设置利用memcache在web集群中同步会话session的实现过程: 1、模拟web集群 我启动了二个...

    Zend Framework实现将session存储在memcache中的方法

    本文实例讲述了Zend Framework实现将session存储在memcache中的方法。分享给大家供大家参考,具体如下: 在zend framework中,已经可以将session存储在数据库中了,不过还不支持memcache,我简单得实现了一下。 下面...

    Nginx+Tomcat7+Memcached集群Session共享

    Nginx+Tomcat7+Memcached集群Session共享 ...主要是利用memcached-session-manager(下面简称msm)开源tomcat插件改变tomcat原始的session存储机制,将session的存储放到分布式缓存memcache中,从而实现对session的共享

    php实现session共享的实例方法

    为什么要session共享? 现在稍微大一点的网站基本上都有好几个子域名,比如...客户端访问访问不同的页面都会把session_id传到服务端,通过session_id来获取session内容。 流程是这样,可是不同的服务器会对

    php_memcache

    Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。

    MVC使用Memcache+Cookie解决分布式系统共享登录状态学习笔记6

    为了解决单机处理的瓶颈,增强软件的可用性,我们... 我们使用MemCache+Cookie方案来解决分布式系统共享登录状态的问题。  Memcache服务器本身就是一个Socket服务端,内部数据采用键值对的形式存储在服务器的内存中

    PHP把实例化的class对象永久保存

    2.为了提升session的读写速度,所以我把session存入了memcache里,这样就降低了服务器的I/O压力 3.其实更好的方法是把实例化的类存入memcache里,这样就可以多用户共用了.不必每个访客建立一个会话,目前我的做法是把...

    plugins工具

    1 session(http)-&gt;datebase, apc, memcache 三种方式存储session数据 question:关于两个IE页面之间SESSION数据不能共享 2 pager (分页) 3 image(验证码) 4 fileDir/file -&gt; 图片上传 5 url/cookie-&gt;记录...

    PHP操作Memcache实例介绍

    b/s: 基于浏览器和服务器架构 web程序 c/s: QQ SVN client客户端+ 服务器简单的基于文本行的协议: redis memcache 区别: 都是存储数据的,memcache直接保存到内存中,redis 保存到内存中,关闭之后保存到硬盘中,...

Global site tag (gtag.js) - Google Analytics