session---cookie 网站搭建
很多登陆信息的网站,在登陆一次后,不管怎么刷新,也许处理的web服务器变了,但是登陆信息一直在,不需要我们再次输入,这就用到session-cookie的技术,其原理就是,服务端用session记录用户登陆的信息,然后生成一个sid,然后把sid放到cookie里,再把cookie发给客户端,这样客户端刷新或者短时间后再打开,就会把cookie发给服务端,服务端根据其kid就可以掉出存储的session文件里的信息,这样就不需要客户端再次输入
模拟完成这个web服务器,需要搭建集群,一个nginx的web调度服务器,多个web服务器
其中 nginx调度服务器搭建方法可以查看nginx总结;
然后 搭建两个web服务器,可以用Apache,也可以用nginx,
如果用Apache,只需要修改配置文件中的DirectoryIndex,使其默认访问index.php即可
而如果用nginx,需要修改/下的index,还要作动静分离才可以 然后在PHP文件中写上session的调用语句
<?php
session_start(); # Starting Session
$username=$_POST['username'];
$password=$_POST['password'];
# Assume user authenticated successfully. Store session variables
$_SESSION['login_user']= $username;
$_SESSION['logged_in'] = "true";
$_SESSION['id'] = session_id();
header("Location: home.php");
?>
这样就可以实现单台服务器可以和客户端session会话连接,不过默认session把信息数据保存在本地服务器,
也就是说,访问调度服务器,调度服务器把数据转发给一个web服务器,这个web服务器生成session信息,发送cookie给客户端,但这时候,如果客户端刷新,调度器把数据转发给其他web服务器,这些服务器里面没有相应的session文件,导致又要输入,这时候,我们就要把session信息互通,具体方法就是,在调度器中建立一个memcache数据库,然后所有的web服务器session信息都存入数据库
PHP---memcache
php连接数据库需要相应的包 yum install -y php-pecl-memcache
装包后,就可以测试连接了,用下面的php文件测试一下
<?php
$memcache=new Memcache; //创建memcache对象
$memcache->connect('IP',11211) or die ('could not connect!!');
$memcache->set('key','test'); //定义变量
$get_values=$memcache->get('key'); //获取变量值
echo $get_values;
?>
然后就是配置php的session配置,其配置文件: /etc/php-fpm.d/www.conf,修改最后两行
php_value[session.save_handler] = memcache
php_value[session.save_path] = "tcp://调度器IP:11211"
这样就实现了全部的web集群的任务