php 负载均衡 session,php+nginx负载均衡,配置session遇到难题,值得高手深入研究。...

php+nginx负载均衡,配置session遇到难题,值得高手深入研究。

发布时间:2009-10-13 16:21:51来源:红联作者:123498296

[i=s] 本帖最后由 123498296 于 2009-10-13 16:35 编辑 [/i]

服务器是使用session NFS共享方式实现了的!session NFS共享方式配置如下:

首先,修改 php.ini的 session.save_path 选项修改如下:

session.save_path = "2;/tmp/php_sess" (去掉前面分号)

意为把session存放在 "/tmp/php_sess" 目录下,并且分成 2 级子目录,每级子目录又分别有 16 个子目录。

2.假设php的主目录为 /usr/local/server/php/,则新建一个文件 /usr/local/server/php/include/php/ext/session/mod_files.sh,其内容如下:

#! /bin/sh

# NAME

# mod_files.sh - Update of the php-source/ext/session/mod_files.sh

#

# SYNOPSIS

# mod_files.sh basedir depth [numberofsubdirs]

#

# DESCRIPTION

# this script creates the directories tree used by php to store the session files

# (see php.ini - 'session.save_path' option)

#

# Example: if you want php to store the session files in a directory tree

# of 3 levels of depth containing 32 directories in each directory,

# first, put the setting bellow in the php.ini file:

#

# session.save_path = "3;/tmp/session"

#

# Now create the basedir directory: 'mkdir /tmp/session'

#

# Then, call this scrip with the following arguments:

#

# ./mod_files.sh ./mod_files.sh /tmp/session 3 32

if test "$2" = ""; then

echo "usage: $0 basedir depth [numberofsubdirs]"

echo "numberofsubdirs: if unset, defaults to 16. if 32, 32 subdirs, if 64, 64 subdirs."

exit 1

fi

if test "$2" = "0"; then

exit 0

fi

hash_chars="0 1 2 3 4 5 6 7 8 9 a b c d e f"

if [ ! -z $3 ] ; then

if test "$3" -a "$3" -eq "32"; then

hash_chars="$hash_chars g h i j k l m n o p q r s t u v"

if test "$3" -eq "64"; then

hash_chars="$hash_chars w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z - ,"

fi

fi

fi

for i in $hash_chars; do

newpath="$1/$i"

mkdir $newpath || exit 1

sh $0 $newpath `expr $2 - 1` $3

done

3.设置为可执行之后,运行以下命令来创建哈希目录:

#cd /usr/local/server/php/include/php/ext/session/

#./mod_files.sh /tmp/php_sess 2 16

4现在,就开始设置 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) #(意思是:允许svr*所以的机器来访问)

5.然后重启 nfs 服务,即可对另外两台主机提供NFS共享了。

在 svr2、svr3 上执行以下命令来挂在NFS:

#mkdir /tmp/php_sess

#mount svr1:/tmp/php_sess /tmp/php_sess

按上面的配置完成 session NFS 共享,但是问题来了,

我在A服务器上使用PHP脚本如下:

sei.php(文件名)

测试:A服务能正常显示ABC 但是B服务不能得到A服务访问的session,不显示ABC,显示全是空白。按道理说,按上面session nfs共享配置,我A服务产生了 ABC,我B服务器能自动读取ABC,应该也显示ABC才对啊!!(session NFS共享测试,是不是我PHP脚本有问题??)

大家帮帮忙。。。错在那 错在那 ? 世界人民救救我!!!

文章评论

共有 5 条评论

Motor 于 2014-04-05 10:22:55发表:

正在攒钱中,也在搜寻知识中,这个真的很详细,支持你!

辰南 于 2014-02-24 13:28:40发表:

新手来了,过来瞧瞧,多多指教。

于 2014-02-06 17:37:38发表:

2

123498296 于 2009-10-14 09:51:20发表:

有没有搞错 ! 什么PO LUNTAN

123498296 于 2009-10-13 17:26:05发表:

高手高手 来救救世人吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值