`
berrywu
  • 浏览: 128347 次
  • 性别: 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 的方法。

分享到:
评论

相关推荐

    tomcat6 memcache session manager session共享 jar包下载

    描述中提到,“用于tomcat6 使用memcache 实现session共享的jar包”,这表明这些jar文件是为Tomcat6设计的插件或库,目的是通过Memcache这个内存缓存系统来存储和管理Session数据。Memcache是一个高性能、分布式的...

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

    总的来说,"PHP实现多服务器session共享之memcache共享"这个主题涵盖的知识点包括:session管理、分布式存储、memcache的使用、PHP配置、并发控制以及系统扩展性设计。掌握这些知识对于构建高可用、可扩展的Web应用...

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

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

    集群环境下memcache解决session共享

    本篇将深入探讨如何在Tomcat8的集群环境中使用memcache来解决session共享的问题。 首先,让我们理解什么是session。Session是Web应用程序用来跟踪用户状态的一种机制,它存储在服务器端,通常包含了用户的登录信息...

    memcache共享session用到的jar

    2. **配置Session管理器**:在Web应用的配置文件(如web.xml)中,设置session管理器,指定使用Memcache作为session存储的后端。 3. **初始化Memcache连接**:在应用启动时,建立与Memcache服务器的连接,并设置好...

    Nginx+tomcat6+memcache配置集群session共享所需jar包

    在这个配置中,我们将使用Memcached来存储session数据,确保所有Tomcat节点都能访问到相同的数据。提供的jar包“memcache-session-manager”就是用来实现这一功能的。该组件允许Tomcat将session对象序列化并存储到...

    session共享之memcache Redis

    将Session数据存储在memcache中,可以让多台服务器通过网络访问同一个Session,实现Session共享。在PHP中,可以使用`memcached`扩展来操作memcache。例如,`SessionMemcache.php`文件可能包含了以下代码: ```php $...

    tomcat7 通过memcache 实现 session共享依赖包

    10. **minlog-1.3.0.jar**:MinLog是一个简单的日志库,可能被上述库使用来记录运行时信息和错误。 总结起来,这个压缩包提供了一套完整的解决方案,用于在Tomcat7环境中通过Memcache实现session共享。通过这些库,...

    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使用memcache存储session的详解

    通常情况下,可以使用PECL安装Memcache扩展,一旦安装完成,你就可以开始配置PHP来使用Memcache存储session了。 配置PHP使用Memcache存储session有几种方法: 方法一:在php.ini配置文件中进行全局设置。需要找到...

    Memcache Session Manager + Tomcat8.5.6

    标题中的“Memcache Session Manager + Tomcat8.5.6”指的是在Tomcat 8.5.6版本中,利用Memcache作为会话管理器来实现跨服务器的session共享。Memcache是一个高性能、分布式内存对象缓存系统,常用于缓解数据库压力...

    tomcat整合nginx负载均衡+memcache共享session全部程序包

    这个程序包“tomcat7+nginx+memcached”旨在实现通过Nginx进行负载均衡,以及利用Memcache来共享Tomcat服务器之间的Session数据。以下是关于这个集成方案的详细解释: 1. **Nginx**: - **功能**:Nginx是一款高...

    Memcache Session Manager Tomcat8.5.6

    标题 "Memcache Session Manager Tomcat8.5.6" 指的是在Tomcat 8.5.6版本中使用Memcache作为会话管理器的一种配置。这种配置旨在提高Web应用在集群环境下的性能和可扩展性,通过将用户的会话数据存储在分布式缓存...

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

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

    session共享 tomcat+nginx+memcache

    5. **Nginx配置**:在Nginx的配置文件中,你可以使用`ip_hash`或`sticky`模块来基于用户的IP地址或特定cookie保持会话粘滞,确保同一用户的请求始终路由到同一台Tomcat服务器,以减少Session同步的需求。 6. **测试...

    tomcat7集群session共享memcache依赖包1.8.3

    为了解决这个问题,我们可以利用第三方缓存系统,如Memcached,来实现Session的集中式存储和共享。"tomcat7集群session共享memcache依赖包1.8.3"这个标题正揭示了这样一个解决方案。 首先,让我们深入了解Tomcat7...

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

    使用memcache存储session数据时,注意数据的加密和安全传输。虽然memcache本身不提供加密,但可以在应用程序层进行数据加密,防止敏感数据泄露。 6. **性能监控和优化**: 在实际运行中,需要定期检查memcache...

Global site tag (gtag.js) - Google Analytics