Memcached session共享案例

案例環境:

背景:由於php-fpm運行在不同的服務器上,然而默認的phpsession數據是在各個服務器上分別存放的。如果在某一次php請求過後,nginxphp請求發送到一臺php-fpm服務器上,就會導致session的丟失。那麼接下來就需通過memcached統一存儲session來解決這樣的問題。

wKioL1Xw6WChdS0cAAFIHnvGQCM181.jpg

第一步:基礎環境搭建

1、完成nginx+php-fpmmysql分離的基礎環境搭建(mysql注意分別授權給web服務器)

2、php擴展memcache

3、Memcached服務端的部署

4、Heartbeat環境的部署(heartheat啓動服務時,服務必須在/etc/init.d/下)

5、測試保障能夠通過IP地址192.168.1.123能夠正常訪問

 

 

第二步:安裝如上的環境搭建後,不共享session,見web1web2存放在相應的web目錄下。測試代碼如下

Web1上的測試代碼web1.php

<?php

session_start();

$_SESSION['TEST']=session value test ;

echo $_SESSION['TEST']

?>

測試結果:

wKioL1Xw6l6ifZ1XAABWsqIR_yA156.jpg 

Web2上的測試代碼web2.php(測試前,通過關閉web1heartbeat服務(/etc/init.d/heartbeat stop),讓服務切換到web2)

<?php

session_start();

echo $_SESSION['TEST']

?>

測試結果:

wKioL1Xw6mfh6rRCAABvmnV99h0691.jpg 

 

說明:在web1中,給TEST session賦值爲“session value test”,那麼web1肯定能夠輸出其內容,那web2卻不能輸出,其原因在於,session默認是保存在自己的web服務器上的。基於這樣的問題,如下,我們將通過session共享的方式解決這樣的問題

 

第三步:session共享測試

 

1、192.168.1.121上啓動memcached

   memcached -d -m 100 -l 192.168.1.121 -p 11211 -u root

2、分別的web1web2上的php.ini/usr/local/php/lib目錄下)文件中,配置如下內容

  [Session]

  session.save_handler = memcache

  session.save_path = tcp://192.168.1.121:11211

 

說明:作用就是通過memcached來處理session,保存路徑爲tcp://192.168.1.121:11211

 

3、完成後,重新啓動php-fpm服務器

[root@web1 sbin]# ps -aux | grep php-fpm

Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ

root      1933  0.0  0.5  41004  2768 ?        Ss   06:32   0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)

[root@web1 sbin]# kill -QUIT 1933

[root@web1 sbin]# ./php-fpm

[root@web2 lib]# ps -aux | grep php-fpm

Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ

root      1493  0.0  0.5  41004  2748 ?        Ss   06:33   0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)

[root@web2 lib]# kill -QUIT 1493

[root@web2 sbin]# ./php-fpm

 

4、phpinfo中,需包含如下內容

wKiom1Xw6EawNPNbAABTmtVwFZo243.jpg 

5、再測試web1.phpweb2.php的結果

Web1

wKiom1Xw6F-yp4WEAABOSw1jzCg344.jpg 

Web2:

wKiom1Xw6GeC6Fi3AABQthWmS5s423.jpg 

說明:session共享成功


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章