时间:2021-05-26
PHP实现多服务器session共享之NFS共享
前言,Nio大侠提出了session多服务器共享的问题,原文请见PHP实现多服务器共享SESSION数据。
其中,有一种方法就是利用NFS来共享session,如果session量比较大并且所有的session文件都在同一个子目录下的话,那么可能会由此带来很严重的负载问题,甚至导致网站无法使用。本文就是对这个方案做一下详细的解说。
首先,修改php.ini的session.save_path选项,大致如下:
session.save_path="2;/tmp/php_sess"
意为把session存放在"/tmp/php_sess"目录下,并且分成2级子目录,每级子目录又分别有16个子目录。
接下来,假设php的主目录为/usr/local/server/php/,则新建一个文件/usr/local/server/php/include/php/ext/session/mod_files.sh,其内容如下:
#!/bin/sh
#NAME
#mod_files.sh-Updateofthephp-source/ext/session/mod_files.sh
#
#SYNOPSIS
#mod_files.shbasedirdepth[numberofsubdirs]
#
#DESCRIPTION
#thisscriptcreatesthedirectoriestreeusedbyphptostorethesessionfiles
#(seephp.ini-'session.save_path'option)
#
#Example:ifyouwantphptostorethesessionfilesinadirectorytree
#of3levelsofdepthcontaining32directoriesineachdirectory,
#first,putthesettingbellowinthephp.inifile:
#
#session.save_path="3;/tmp/session"
#
#Nowcreatethebasedirdirectory:'mkdir/tmp/session'
#
#Then,callthisscripwiththefollowingarguments:
#
#./mod_files.sh./mod_files.sh/tmp/session332
iftest"$2"="";then
echo"usage:$0basedirdepth[numberofsubdirs]"
echo"numberofsubdirs:ifunset,defaultsto16.if32,32subdirs,if64,64subdirs."
exit1
fi
iftest"$2"="0";then
exit0
fi
hash_chars="0123456789abcdef"
if[!-z$3];then
iftest"$3"-a"$3"-eq"32";then
hash_chars="$hash_charsghijklmnopqrstuv"
iftest"$3"-eq"64";then
hash_chars="$hash_charswxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-,"
fi
fi
fi
foriin$hash_chars;do
newpath="$1/$i"
mkdir$newpath||exit1
sh$0$newpath`expr$2-1`$3
done
设置为可执行之后,运行以下命令来创建哈希目录:
shell>#cd/usr/local/server/php/include/php/ext/session/
shell>#./mod_files.sh/tmp/php_sess216
现在,就开始设置NFS共享了。假定有3台主机,ip分别为192.168.0.1(主机名svr1)、192.168.0.2(主机名svr2)、192.168.0.3(主机名svr3),现在让192.168.0.1来提供NFS共享服务,配置/etc/exports,加入如下内容:
/tmp/php_sess/svr*(rw,no_root_squash)
然后重启nfs服务,即可对另外两台主机提供NFS共享了。
在svr2、svr3上执行以下命令来挂在NFS:
shell>#mkdir/tmp/php_sess
shell>#mountsvr1:/tmp/php_sess/tmp/php_sess
最后,在这两个主机上对php.ini增加/修改上面提到的内容,然后重启apache即可。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
linux搭建NFS服务器为了实现不同操作系统中的数据共享,我们一般会搭建一些用于文件共享的服务器,nfs服务器就是其中一种,它实现的是linux与linux之
PHP实现多服务器共享SESSION数据一、问题起源稍大一些的网站,通常都会有好几个服务器,每个服务器运行着不同功能的模块,使用不同的二级域名,而一个整体性强的
本文实例为大家分享了springboot实现多服务器session共享的具体代码,供大家参考,具体内容如下环境:springboot:2.0.4redis:3.
NFS网络文件服务器NFS是网络文件系统的简称,主要用在linux与linux之间的共享。NFS在centos系统中被默认安装,它依赖于portmap和nfs-
大势至局域网共享文件加密软件(点击下载)是一款专注于保护服务器共享文件安全、设置共享文件访问权限、监控共享文件访问日志的软件,通过在局域网共享文件服务器上安装之