php修改session生存时间,如何在多台web服务器上共享session?

用户投稿 82 0

关于“php修改session”的问题,小编就整理了【3】个相关介绍“php修改session”的解答:

如何在多台web服务器上共享session?

一、将本该保存在web服务器磁盘上的session数据保存到cookie中

即用cookie会话机制替代session会话机制,将session数据保存到客户端浏览器的cookie中,这样同一个用户访问同一网站时,无论负载均衡到哪台web服务器,都不用再去服务器请求session数据,而直接获取客户端cookie中的session数据。如此,同一个用户的登录状态就不会丢失了。

但这样做,有三大弊端:

把session数据放到客户端的cookie中,一般都是重要数据(如用户id、昵称等),会存在安全问题,但可以将session数据加密后,再存放到cookie中,来降低安全风险。

浏览器对单个cookie的数据量大小限制为4K左右,因此会存在数据量的限制问题。

影响带宽性能,降低了页面的访问速度。在高访问量的情况下,用户每次请求时,都要将客户端cookie中的session数据发送到服务器,要占用较多的带宽,进而影响访问速度,服务器带宽成本增高。

二、将本该保存在web服务器磁盘上的session数据保存到MySQL数据库中

sessionid还是利用cookie机制存储到客户端,但session数据却存放在MySQL服务器上。(需要建立sessionid和session数据行的对应关系)

如何实现多台web服务器共享session数据?

这个项目一开始就设计的“很大”,考虑了很多负载均衡方面的东西,比如采用nginx将php的请求分摊到若干个运行phpfastcgi的独立服务器中。这样的设计除了在每个phpfastcgi服务器中要保存一份程序的拷贝以外,还有一个亟待解决的问题。由于phpfastcgi进程分别运行在不同的服务器上,默认的,php的session数据是在各个服务器上分别存放的,这样的话,如果在某一次php请求过后,nginx将php请求发送到了另外集群中的另外一台phpfastcgi服务器,那么就会导致session的丢失。经过一系列考虑,项目组决定采用一台独立memcached服务器来存储整个项目的phpsession数据,再通过改写php的session处理函数来对memcached服务器进行数据读写,然后解决各个phpfastcgi中session不同步的问题。

项目背景基本上就是上面说的那些,下面大概说说相关的网络环境,然后进入具体的配置、实现过程:

1、nginx服务器一台,IP地址:172.16.236.208

2、phpfastcgi服务器两台,IP分别为:172.16.236.210,172.16.236.211

asp和php里session的区别是什么?

1、ASP中session有效期默认为20分钟,而PHP中的默认为180分钟;

2、ASP与PHP中的session都是以文件形式存储在服务器端,但是有一个区别,PHP中的session是存储在一个超全局变量中,所以PHP中要使用session,要用session_start();函数启用session。

到此,以上就是小编对于“php修改session”的问题就介绍到这了,希望介绍关于“php修改session”的【3】点解答对大家有用。

抱歉,评论功能暂时关闭!