好学IT学院:IT信息技术分享交流平台
标签:PHP  来源:imysql.cn  作者:yejr  发布时间:2007-02-02  ★★★加入收藏〗〖手机版
摘要:前言,Nio大侠提出了session多服务器共享的问题,原文请见PHP实现多服务器共享SESSION数据。…

前言,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

PHP和AJAX打造高级RSS聚合器
  RSS聚合器是一种特别适合于使用标准AJAX引擎进行构建的应用程序,然而,要实现对RSS回馈的跨域的AJAX请求往往是很难的。在本…
  • 好学触屏公众号虎力全开、杨帆起航!
  • 好学考试H5触屏版开放内测