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

本文实例讲述了PHP实现分布式memcache设置web集群session同步的方法。

php的session默认是文件存储:

session.save_handler = files
session.save_path = "/var/lib/php/session"

当做web集群,需要session同步时,将session存到分布式memcache来达到共享同步是个不错的办法

方法:

第1种:

vi /etc/php.ini
session.save_handler = memcache
session.save_path = "tcp://192.168.20.193:11211,tcp://192.168.20.194:11211"

第2种:

在php文件中使用ini_set函数进行配置,适合无法修改配置文件的虚拟主机

<?php
....
ini_set("session.save_handler", "memcache");
ini_set("session.save_path", "tcp://192.168.20.193:11211,tcp://192.168.20.194:11211");
....
?>

重启web服务器

service httpd restart

查看phpinfo

测试

192.168.20.193中的login.php

<?php
session_start();
$_SESSION['login_time'] = time();
$_SESSION['username'] = 'test2';
$token=session_id();
echo $token;
//memache实现
$mem = new Memcache();
$mem->addServer('192.168.20.193',11211);
$mem->addServer('192.168.20.194',11211);
/*
//memached实现
$mem = new Memcached();
$servers = array(
 array('192.168.20.193', 11211, 33),
 array('192.168.20.194', 11211, 67)
);
$mem->addServers($servers);
*/
echo '<hr>';
print_r($mem->get($token));
?>
<div>
<a href="http://192.168.20.194/user.php?token=<?php echo $token;?>" rel="external nofollow" target="_balnk">跳转到194网站的个人中心</a>
</div>

192.168.20.194中的user.php

<?php
$mem = new Memcache();
$mem->addServer('192.168.20.193',11211);
$mem->addServer('192.168.20.194',11211);
$token=$_GET['token'];//获取传过来的token
print_r($mem->get($token));
?>
<div>
<a href="http://192.168.20.193/user.php?token=<?php echo $token;?>" rel="external nofollow" target="_balnk">返回193网站的个人中心</a>
</div>

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php缓存技术总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP错误与异常处理方法总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

您可能感兴趣的文章:

  • 基于php使用memcache存储session的详解
  • PHP中使用memcache存储session的三种配置方法
  • 利用Memcached在php下实现session机制 替换PHP的原生session支持
  • php将session放入memcached的设置方法
  • 在php中设置session用memcache来存储的方法总结
  • thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
  • PHP保存session到memcache服务器的方法
  • Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
  • nginx+apache+mysql+php+memcached+squid搭建集群web环境
  • thinkPHP实现MemCache分布式缓存功能
  • PHP扩展Memcache分布式部署方案
(0)

相关推荐

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

    本文实例讲述了Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法.分享给大家供大家参考,具体如下: 1.首先安装memcache服务端: sudo apt-get install memcached 安装完成后系统 自动启动了 memcached服务占用11211端口 如需重新配置11211端口的服务 需要关闭已开启的memcached服务 手动启动: memcached -d -m 128 -p 11211 -u memcache

  • nginx+apache+mysql+php+memcached+squid搭建集群web环境

    服务器的大用户量的承载方案一.前言 二.编译安装 三. 安装MySQL.memcache 四. 安装Apache.PHP.eAccelerator.php-memcache 五. 安装Squid 六.后记 一.前言,准备工作当前,LAMP开发模式是WEB开发的首选,如何搭建一个高效.可靠.稳定的WEB服务器一直是个热门主题,本文就是这个主题的一次尝试.我们采用的架构图如下: 引用-------- ---------- ------------- --------- ------------| 客

  • PHP中使用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

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

    web服务器的php session都给memcached ,这样你不管分发器把 ip连接分给哪个web服务器都不会有问题了,配置方法很简单,就在php的配置文件内增加一条语句就可以了,不过前提你需要装好memcache模块 1.设置session用memcache来存储方法I: 在 php.ini 中全局设置session.save_handler = memcachesession.save_path = "tcp://127.0.0.1:11211"方法II: 某个目录下的 .h

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

    memcached提供了一个自定义的session处理器可以被用于存储用户session数据到memcached服务端.一个完全独立的memcached实例将会在内部使用,因此如果需要您可以设置一个不同的服务器池.session的key被存储在前缀memc.sess.key.之下,因此, 如果你对session和通常的缓存使用了同样的服务器池,请注意这一点.译注:另外一个session和通常缓存分离的原因是当通常的缓存占满了memcached服务端后,可能会导致你的session被从缓存中踢除,

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

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

  • 利用Memcached在php下实现session机制 替换PHP的原生session支持

    方法文件 session实现文件:memcachedsession.php 实现原理(也是PHP内部session的实现原理): 1.先判断客户端有没有sessionid, a.没有就添加一个sessionid给客户端,通常是32位hash码,同时初始化一个数组做session容器 b.如果客户端有sessionid,则利用这个sessionid去memcached里面查数据. 2.用户在页面执行过程中可以自行修改session容器里的session值 3.页面最后会把用户的session容器作

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

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

  • php将session放入memcached的设置方法

    可以修改php.ini文件的情况下: 1.修改php.ini中的 复制代码 代码如下: session.save_hander = memcache;session.save_path = "tcp://host:端口号";//例如:session.save_path = "tcp://127.0.0.1:11211"; 2.正常存取session的值就OK了. 不可以修改php.ini文件的情况下: a.动态修改php.ini中的设置. 复制代码 代码如下: in

  • thinkPHP实现MemCache分布式缓存功能

    本文实例讲述了thinkPHP实现MemCache分布式缓存功能.分享给大家供大家参考,具体如下: 两天在研究MemCache分布式缓存的问题时,发现ThinkPHP其实并不支持分布式缓存功能,这可以从官方提供的CacheMemcache.class.php文件中看到: if(empty($options)) { $options = array ( 'host' => '127.0.0.1', 'port' => 11211, 'timeout' => false, 'persiste

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

    本文实例讲述了thinkPHP多域名情况下使用memcache方式共享session数据的实现方法.分享给大家供大家参考,具体如下: 一.问题起源 稍大一些的网站,通常都会有好几个服务器,每个服务器运行着不同功能的模块,使用不同的二级域名,而一个整体性强的网站,用户系统是统一的,即一套用户名.密码在整个网站的各个模块中都是可以登录使用的.各个服务器共享用户数据是比较容易实现的,只需要在后端放个数据库服务器,各个服务器通过统一接口对用户数据进行访问即可.但还存在一个问题,就是用户在这个服务器登录之

随机推荐