`
wayne173
  • 浏览: 362970 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

转 memcache保存php的session 解决多服务器的session问题

    博客分类:
  • php
阅读更多

 

 

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 存储,用例子测试一下:


___FCKpd___6

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


<?php

$memcache = memcache_connect(localhost, 11211);

var_dump($memcache->get(19216821213c65cedec65b0883238c278eeb573e077));

SESSION[TEST3] = time();

print <br><br>;

print session_id();

?>

会有看到

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

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


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

分享到:
评论

相关推荐

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

    "PHP实现多服务器session共享之memcache共享"的主题着重于如何在多台服务器之间有效地存储和同步用户的session数据,以确保用户在不同服务器间的会话状态能够保持一致。本文将深入探讨这一主题,并围绕相关知识点...

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

    总结,通过memcache实现PHP的多服务器session共享,可以有效解决分布式系统中的用户状态同步问题,提高系统的可扩展性和稳定性。然而,这也需要开发者对memcache、PHP配置以及网络通信有深入的理解,以便在实际应用...

    php session 多服务器的共享

    通过这种方式,无论用户请求哪个服务器,只要Session ID相同,服务器都能从Memcache中获取到相应的Session数据,从而实现跨服务器Session共享。 这种方案的优点在于,Memcache的分布式特性可以轻松地扩展到更多的...

    session共享之memcache Redis

    总结,session共享是多服务器环境中的关键问题,memcache和Redis都是有效的解决方案。通过将Session数据存储在这些内存数据库中,我们可以确保在不同服务器之间的一致性和高可用性。实现这一目标通常涉及自定义PHP的...

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

    本文将深入探讨如何使用PHP和memcached实现多服务器session共享。 首先,memcached是一个高性能的分布式内存对象缓存系统,它可以临时存储数据,减少数据库负载。在PHP中,我们可以通过php_memcache扩展与memcached...

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

    本文实例讲述了PHP保存session到memcache服务器的方法。分享给大家供大家参考,具体如下: 传统的 session 是写入到服务器文件中,可以在 php.ini 中看出,清单如下 session.save_handler = files session.save_...

    PHP基于memcahe的session方法重写

    为了解决这个问题,我们可以利用memcache(或其升级版memcached)来实现session的存储和共享,从而达到session跨服务器跨域的目的。本文将详细介绍如何基于memcache实现PHP的session方法重写。 首先,memcache是一...

    深入Memcache的Session数据的多服务器共享详解

    **三、动机:多服务器session信息共享** 在大型Web系统中,通常会将不同业务部署在不同的服务器上。为了跨服务器共享session数据,可以使用像Memcache这样的分布式缓存系统。当用户在任何服务器上登录后,其session...

    php session阻塞页面分析及优化

    针对PHP Session阻塞问题,可以通过多种方式进行优化,包括但不限于更换存储方式(如使用Memcache或Redis)、优化脚本执行逻辑以及调整服务器配置等。通过这些方法可以有效缓解Session阻塞带来的负面影响,提高系统...

    thinkPHP多域名情况下使用memcache方式共享session数据的实现方法

    由于Memcache是非持久化的,当服务器重启或memcache服务出现问题时,session数据可能会丢失。为避免这种情况,可以考虑定期将session数据备份到数据库,或者使用支持持久化的Memcached。 6. **优化session管理**:...

    memcache_php使用测试

    2. **会话管理**: 利用memcache进行会话数据的存储,不仅可以避免单一服务器的会话数据丢失风险,还能实现多服务器环境下的会话共享,增强应用的可扩展性和灵活性。 3. **配置调优**: 通过细致调整memcache在PHP.ini...

    php_memcache.dll

    - 如果遇到问题,检查错误日志以获取更多信息。 通过合理使用PHP Memcache扩展,开发者可以有效地提升基于PHP5.6的应用程序性能,减少数据库负载,从而改善用户体验。同时,理解如何正确安装和配置扩展,以及如何在...

    win下php-memcache5.4;5.2;5.3扩展和memcache服务端

    Memcache是一个广泛使用的高性能分布式内存对象缓存系统,它可以用来存储数据,如数据库查询结果、session数据等,以提高网站的性能。 PHP-Memcache扩展是PHP与Memcache进行交互的桥梁,允许PHP代码直接存取和操作...

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

    总的来说,使用memcache存储PHP session能够有效地解决多服务器环境下的session同步问题,提高Web应用的可扩展性。通过合理配置和使用memcached,可以减少数据库的压力,提升用户体验。在实际部署中,需要注意调整...

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

    将session存储在Memcache中,可以使得在多个PHP服务器之间共享session成为可能。 1、直接修改php.ini配置文件 这是配置Memcache存储session的最直接方式。通过编辑php.ini文件,我们可以改变PHP默认的session处理...

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

    最后,在实际部署时还需要考虑数据的持久性问题,Memcache默认是不提供持久化的,因此在重启服务或者系统故障时,session数据可能会丢失。可以考虑使用Redis的持久化功能,或者将session数据定期备份,以保证数据的...

    PHP实现分布式memcache设置web集群session同步的方法

    主要介绍了PHP实现分布式memcache设置web集群session同步的方法,结合实例形式分析了php设置与使用memcache实现web集群session同步的相关操作技巧与注意事项,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics