PHP method to implement multi-server session sharing and NFS sharing_PHP tutorial

WBOY
Release: 2016-07-21 15:57:00
Original
1133 people have browsed it

PHP realizes multi-server session sharing and NFS sharing
Foreword, Nio heroes raised the issue of multi-server session sharing. For the original text, please see PHP realizes multi-server sharing of SESSION data.

Among them, one method is to use NFS to share sessions. If the amount of sessions is relatively large and all session files are in the same subdirectory, it may cause serious load problems, or even rendering the website unusable. This article is a detailed explanation of this plan.
First, modify the session.save_path option of php.ini, roughly as follows:

session.save_path = "2;/tmp/php_sess"

means to store the session in "/ tmp/php_sess" directory, and is divided into 2 levels of subdirectories, and each level of subdirectory has 16 subdirectories.
Next, assuming that the main directory of php is /usr/local/server/php/, create a new file /usr/local/server/php/include/php/ext/session/mod_files.sh with the following content :

#! /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

After setting it to executable , run the following command to create the hash directory:

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

Now, start setting up the NFS share. Assume that there are 3 hosts with IP addresses of 192.168.0.1 (host name svr1), 192.168.0.2 (host name svr2), and 192.168.0.3 (host name svr3). Now let 192.168.0.1 provide NFS sharing services, configure /etc /exports, add the following content:

/tmp/php_sess/ svr*(rw,no_root_squash)

Then restart the nfs service to provide NFS sharing for the other two hosts.
Execute the following commands on svr2 and svr3 to mount NFS:

shell>#mkdir /tmp/php_sess
shell>#mount svr1:/tmp/php_sess /tmp/php_sess

Finally, add/modify the above mentioned content to php.ini on these two hosts, and then restart apache.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/317987.htmlTechArticlePHP realizes NFS sharing of multi-server session sharing Preface, Nio heroes raised the issue of multi-server session sharing, original text Please see PHP to implement multi-server sharing of SESSION data. Among them, there is one...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!