Home >Backend Development >PHP Tutorial >The server connection is abnormal and is about to exit. Please re-enter the game. How to implement NFS sharing of multi-server session sharing in PHP
PHP realizes NFS sharing of multi-server session 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 session volume is relatively large and all session files are in the same subdirectory, it may cause serious load problems and even render 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"
It means to store the session in the "/tmp/php_sess" directory and divide it into 2 levels. Directory, each 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]
#
# DE SCRIPTION
# 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 base directory: 'mkdir/tmp/session'
#
# the? P/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, run php. ini add/modify the content mentioned above, and then restart apache.
The above introduces the server connection abnormality. Please re-enter the game. PHP method to realize multi-server session sharing and NFS sharing, including the server connection abnormality. Please re-enter the game soon. I hope friends who are interested in PHP tutorials can learn from it. help.