php java session共享_PHP实现session共享
確認實驗環境:
proxy:
# nginx
# systemctl start memcached
# ss -ntulp | grep 80 #這個80端口是nginx
# ss -ntulp | grep 11211 #memcached
web1和web2:
# nginx
# systemctl start php-fpm
# systemctl start mariadb
# ss -ntulp | grep 80 #這個80端口是nginx
# ss -ntulp | grep 9000 #php-fpm
# ss -ntulp | grep 3306 #mariadb
/usr/local/nginx/html/有php測試頁面
##############################################################################
PHP實現session共享
通過修改PHP-FPM配置文件,實現session會話共享,本案例需要在練習三的基礎上實現:
配置PHP使用memcached服務器共享Session信息
客戶端訪問兩臺不同的后端Web服務器時,Session 信息一致
Nginx服務器除了承擔調度器外,還需要擔任memcached數據庫的角色,并在兩臺后端LNMP服務器上實現PHP的session會話共享。
步驟
步驟一:構建memcached服務
1)安裝Memcached服務(如果192.168.4.5上已經有本軟件包,此步驟可以忽略)
# yum -y install memcached
2)啟動服務并查看網絡連接狀態驗證是否開啟成功:
[root@proxy ~]# systemctl restart memcached
[root@proxy ~]# netstat -anptu | grep memcached
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 2839/memcached
tcp 0 0 :::11211 :::* LISTEN 2839/memcached
udp 0 0 0.0.0.0:11211 0.0.0.0:* 2839/memcached
udp 0 0 :::11211 :::* 2839/memcached
3)關閉SELinux、防火墻
[root@proxy ~]# setenforce 0
[root@proxy ~]# firewall-cmd --set-default-zone=trusted
------------------------------------------------------------------------
步驟二:在后端LNMP服務器上部署Session共享
注意:這些操作在兩臺后端Web服務器上均需要執行,以下操作以Web1(192.168.2.100)服務器為例。
1)為PHP添加memcache擴展
注意,因為后端兩臺web服務器(web1,web2)都需要連接memcached數據庫,所以兩臺主機都需要安裝PHP擴展模塊(下面也web1為例)。
# yum -y install php-pecl-memcache
---------------------------------------------------------------------------
2)修改PHP-FPM配置文件,并重啟服務
注意,因為后端兩臺web服務器(web1,web2)都需要修改配置文件(下面也web1為例)。
web1和web2:
# vim /etc/php-fpm.d/www.conf
只修改最后2行,=號后面的東西。修改該配置文件的兩個參數。文件的最后2行
修改前效果如下:
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session
#原始文件,默認定義Sessoin會話信息本地計算機(默認在/var/lib/php/session)
---------------------------------------------------------------------------
修改后:
php_value[session.save_handler] = memcache
php_value[session.save_path] = "tcp://192.168.2.5:11211"
#定義Session信息存儲在公共的memcached服務器上,主機參數中為memcache(沒有d)
#通過path參數定義公共的memcached服務器在哪(服務器的IP和端口)
# systemctl restart php-fpm #修改了php-fpm的配置文件之后,要記得重啟服務,更新配置。
-----------------------------------------------------------------------------
客戶端測試
# cd /var/lib/php/session/
[root@web1 session]# ls
sess_82eih6htk9covescqipqcl0bm2 sess_vbkvabefoge01usta9ffueq2l2
[root@web1 session]# rm -rf *
然后用谷歌瀏覽器訪問會比較快,要先清空瀏覽器緩存(點擊右上角3個點---歷史記錄--歷史記錄---左上角3橫線---清除瀏覽數據
192.168.4.5/index.php
隨便輸入帳號和密碼,進入登陸后的頁面,此時瀏覽器地址欄會變成http://192.168.4.5/home.php,會發現只用登陸一次就能成功,并且刷新的話,還可以看到背景顏色會變,說明是2臺不同的服務器提供的頁面。調度成功!然后復制它顯示的ID號
它的頁面顯示如下
Welcome : lisi #用戶名
Logged In : true #狀態:已登陸
Session ID: 66l1icju956elo4fve2ipmpa65 #用戶ID
proxy:
# telnet 192.168.2.5 11211
登陸后頁面如下:
Trying 192.168.2.5...
Connected to 192.168.2.5.
Escape character is '^]'.
get 66l1icju956elo4fve2ipmpa65 #輸入內容查詢數據是否存在,用get 剛才復制的ID號
搜索的結果如下:
VALUE 66l1icju956elo4fve2ipmpa65 0 78
login_user|s:2:"yy";logged_in|s:4:"true";id|s:26:"66l1icju956elo4fve2ipmpa65";
END
總結
以上是生活随笔為你收集整理的php java session共享_PHP实现session共享的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql router docker_
- 下一篇: nginx php fpm socket