本文实例讲述了PHP实现负载均衡session共享redis缓存操作。分享给大家供大家参考,具体如下:
目前创新互联建站已为上1000+的企业提供了网站建设、域名、虚拟主机、网站托管、服务器托管、企业网站设计、临洮网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
1、首先先创建html表单页面
meta
chatset='utf-8'
center
form
action="se.php"
method="post"
table
tr
td帐号:/td
tdinput
type="text"
name="username"/td
/tr
tr
td密码:/td
tdinput
type="password"
name="pwd"/td
/tr
tr
td/td
tdinput
type="submit"
value="登录"/td
/tr
/table
/form
/center
2、创建接受表单的文件
?php
header('content-type:text/html;charset=utf-8');
set_time_limit(10);
ini_set("session.save_handler",'redis');//开启php.ini中的redis配置
ini_set("session.save_path","tcp://192.168.1.70:6379");//第一台服务器的redis
session_start();//开启session
$username
=
$_POST['username'];
$_SESSION['username']
=
$username;
echo
"scriptalert('登录成功!');location.href='from.php'/script";//登录成功后跳转到欢迎登录页面
?
3、跳转到from.php去判断第一台服务器的redis中的session是否存到了本台服务器的session中
?php
header('content-type:text/html;charset=utf-8');
set_time_limit(10);
ini_set("session.save_handler",'redis');//开启php.ini中的redis配置
ini_set("session.save_path","tcp://192.168.1.70:6379");//第一台服务器的redis
session_start();//开启session
$username
=
isset($_SESSION['username'])
?
$_SESSION['username']
:
'';//判断当前是否存在session
//$id
=
$_SESSION['PHPSESSID'];
//echo
$id;
if(empty($username)){
echo
"scriptalert('请重新登录!');location.href='index.php'/script";
}else{
echo
"欢迎".$username."登录";
}
?
这样就简单了实现了redis
session共享的功能,要测试的话需要两台服务器,建议使用linux
比较好用
linux上安装redis可参考《Linux平台安装redis及redis扩展的方法》
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php缓存技术总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP错误与异常处理方法总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
您可能感兴趣的文章:Nginx
安装笔记(含PHP支持、虚拟主机、反向代理负载均衡)PHP开发负载均衡指南PHP实现负载均衡下的session共用功能Thinkphp结合AJAX长轮询实现PC与APP推送详解PHP经典算法集锦【经典收藏】php
分库分表hash算法php的hash算法介绍PHP中对各种加密算法、Hash算法的速度测试对比代码PHP实现的一致性Hash算法详解【分布式算法】PHP实现负载均衡的加权轮询方法分析
1、数据实时备份同步,数据库服务器出问题时我们也有其正常工作时的备份
2、数据实时备份同步,一台服务器负载不起时,可以用来做负载均衡
3、数据实时备份同步,数据库服务器可以无间断,无损失迁移
4、主服务器被攻击或当机时另一台服务同步机可以应急.
a、配置发布服务器
b、选中指定 [服务器] 节点
c、从 [工具] 下拉菜单的 [复制] 子菜单中选择 [发布、订阅服务器和分发] 命令
d、系统弹出一个对话框点 [下一步] 然后看着提示操作
--直到"指定快照文件夹"
--在"快照文件夹"中输入准备工作中创建的目录: \\服务器名\pub
一[下一步] 直操作到完成。
e、当完成了出版服务器的设置以后系统会为该服务器的树形结构中添加一个复制监视器
同时也生成一个分发数据库(distribution).
假设你这两台服务器是linux的,将第三台服务器当做文件共享服务器,挂载到你这两个服务器上的同一个位置,然后PHP上传文件时,保存到这个挂载盘上,这样两台服务器的附件就共享了,并且同步,不管在哪套程序上上传的,都一样。
当然也可以不需要第三台服务器,将你这两台中的一台挂载到另一台上,也是一样的效果。
windows服务器原理相同,不在赘述。
只用两台服务器,举例说明:
你的两个服务器分别是192.168.1.100和192.168.1.200
在192.168.1.100上,文件上传的目录设置为/var/tmp
将/var/tmp挂载到192.168.1.200的/var/tmp上
(1)在192.168.1.100上开启NFS服务并编辑/etc/exports文件:
chkconfig --level 35 nfs on
service nfs start
vi /etc/exports,加入:
/var/tmp 192.168.1.200(rw,sync,no_root_squash)
(2)在192.168.1.200上创建目录并挂载
mkdir /var/tmp
chmod 777 -R /var/tmp
mount 192.168.1.100:/var/tmp /var/tmp
这样就可以了。
你不管在哪台服务器上上传,都将文件保存到/var/tmp里,两个服务器之间的文件实现共享了
换种思路解决这问题,我提供点方法:1:找分区或目录同步软件,某台服务器改动了自动把修改应用到别的服务器,比如红旗的HA。2:换种建服务器的思路,后台用一台独立的服务器做数据库和文件服务器,用来存放数据库和上传的文件,另外的做负载均衡运行服务器,把不需要变动的网页程序放上面。。。。
负载均衡、群集 的概念不知道你是否清楚?
就是多台服务器同时提供服务,分流访问用户
按你说的论坛,分2种情况
1、程序分流:就是数据库用同一个,网站服务器有多个,这种情况比较简单,专门做一个入口程序,统计各网站的当前访问人数,把当前用户指向人数较少的那个服务器,因为数据库是一个,所以用户进来都能看到最新的内容;
2、数据库分流:此时网站可能1个,可能多个,但是数据库是多个,这种情况,要考虑多个数据库之间的同步,我没有做过这种情况