手机
当前位置:查字典教程网 >编程开发 >php教程 >PHP实现多服务器session共享之NFS共享的方法
PHP实现多服务器session共享之NFS共享的方法
摘要:PHP实现多服务器session共享之NFS共享前言,Nio大侠提出了session多服务器共享的问题,原文请见PHP实现多服务器共享SES...

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即可。

【PHP实现多服务器session共享之NFS共享的方法】相关文章:

php实现根据IP地址获取其所在省市的方法

PHP实现即时输出、实时输出内容方法

PHP准确取得服务器IP地址的方法

php简单实现多字节字符串翻转的方法

php实现每天自动变换随机问候语的方法

PHP实现根据银行卡号判断银行

PHP基于MySQL数据库实现对象持久层的方法

PHP使用flock实现文件加锁的方法

php实现TCP端口检测的方法

JavaScript实现滚动栏效果的方法

精品推荐
分类导航