PHP实现多服务器session共享之NFS共享的方法


Posted in PHP onMarch 16, 2007

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  - 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

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

shell>#cd /usr/local/server/php/include/php/ext/session/
shell>#./mod_files.sh /tmp/php_sess 2 16

现在,就开始设置 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>#mount svr1:/tmp/php_sess /tmp/php_sess

最后,在这两个主机上对 php.ini 增加/修改上面提到的内容,然后重启apache即可。 

PHP 相关文章推荐
php json与xml序列化/反序列化
Oct 28 PHP
php获取文件大小的方法
Feb 26 PHP
不使用php api函数实现数组的交换排序示例
Apr 13 PHP
PHP查询快递信息的方法
Mar 07 PHP
PHP中is_file()函数使用指南
May 08 PHP
PHP通过API获取手机号码归属地
May 28 PHP
WordPress中制作导航菜单的PHP核心方法讲解
Dec 11 PHP
WordPress开发中的get_post_custom()函数使用解析
Jan 04 PHP
PHPMailer使用QQ邮箱实现邮件发送功能
Aug 18 PHP
PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
Jan 23 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
Mar 26 PHP
phpquery中文手册
Mar 18 PHP
用PHP实现多服务器共享SESSION数据的方法
Mar 16 #PHP
不错的一篇面向对象的PHP开发模式(简写版)
Mar 15 #PHP
推荐Discuz!5的PHP代码高亮显示与实现可运行代码
Mar 15 #PHP
Linux下进行MYSQL编程时插入中文乱码的解决方案
Mar 15 #PHP
mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
Mar 15 #PHP
一个简单的PHP&MYSQL留言板源码
Jul 19 #PHP
利用PHP和AJAX创建RSS聚合器的代码
Mar 13 #PHP
You might like
PHP高自定义性安全验证码代码
2011/11/27 PHP
php设计模式之命令模式的应用详解
2013/05/21 PHP
PHP处理Oracle的CLOB实例
2014/11/03 PHP
php解析xml方法实例详解
2015/05/12 PHP
JSON字符串传到后台PHP处理问题的解决方法
2016/06/05 PHP
PHP两个n位的二进制整数相加问题的解决
2018/08/26 PHP
防止网站内容被拷贝的一些方法与优缺点好处与坏处分析
2007/11/30 Javascript
javascript入门基础之私有变量
2010/02/23 Javascript
强大的jquery插件jqeuryUI做网页对话框效果!简单
2011/04/14 Javascript
jq选项卡鼠标延迟的插件实例
2013/05/13 Javascript
jQuery往textarea中光标所在位置插入文本的方法
2015/06/26 Javascript
JavaScript节点及列表操作实例小结
2015/08/05 Javascript
jquery插件uploadify实现带进度条的文件批量上传
2015/12/13 Javascript
AngularJS入门教程之过滤器详解
2016/08/19 Javascript
javascript创建对象的3种方法
2016/11/02 Javascript
解析微信JS-SDK配置授权,实现分享接口
2016/12/09 Javascript
从零开始学习Node.js系列教程二:文本提交与显示方法
2017/04/13 Javascript
JS开发中百度地图+城市联动实现实时触发查询地址功能
2017/04/13 Javascript
浅谈node.js 命令行工具(cli)
2018/05/10 Javascript
Vue Cli3 打包配置并自动忽略console.log语句的方法
2020/04/23 Javascript
实用的 vue tags 创建缓存导航的过程实现
2020/12/03 Vue.js
微信小程序组件生命周期的踩坑记录
2021/03/03 Javascript
跟老齐学Python之传说中的函数编写条规
2014/10/11 Python
python实现自动重启本程序的方法
2015/07/09 Python
疯狂上涨的Python 开发者应从2.x还是3.x着手?
2017/11/16 Python
Python递归函数 二分查找算法实现解析
2019/08/12 Python
python图的深度优先和广度优先算法实例分析
2019/10/26 Python
Python 如何实现数据库表结构同步
2020/09/29 Python
python实现按日期归档文件
2021/01/30 Python
驻村工作先进事迹
2014/08/14 职场文书
2014乡镇干部对照检查材料思想汇报
2014/09/26 职场文书
向国旗敬礼活动小结
2014/09/27 职场文书
安全承诺书
2015/01/19 职场文书
2016年国庆节新闻稿范文
2015/11/25 职场文书
Python基础知识学习之类的继承
2021/05/31 Python
python playwright之元素定位示例详解
2022/07/23 Python