1. 程式人生 > >Memcached緩存Session(不建議)

Memcached緩存Session(不建議)

情況 升級 png 實驗 cached memcach 數據 分享 art

本文源鏈接地址:https:www.93bok.com

實驗環境: Centos6.5minimal 64位系統
服務器IP:192.168.10.22
說明:
1.  LNMP+Memcached環境搭建不再演示,可參考之前文章
2.  相信大家也看到了,文章的後邊加了(不建議)的後綴,說說原因吧:

A、如果用memcached存儲Session,那麽當memcached集群發生故障(比如內存溢出)或者維護(比如升級、增加或減少服務器)時,用戶會無法登錄,或者被踢掉線
B、memcached 的回收機制可能會導致用戶無緣無故地掉線

方法一:通過PHP配置文件使用memcached緩存session

1、配置PHP

Session的數據默認情況下,保存在file文件中,我們可以通過修改php的配置,讓其保存在其它地方:

vim /etc/php/php.ini

session.save_handler = memcached
session.save_path = "192.168.10.22:11211"
2、重啟php-fpm
service php-fpm restart
3、測試一下
vim /a01/apps/nginx/html/session.php

<?php
//set_session
session_start();
$_SESSION[‘name‘]=‘nongkaige‘;
?>
<?php
//get_session
session_start();
$name=$_SESSION[‘name‘];
echo $name;
?>
http://192.168.10.22/session.php

技術分享圖片

輸出nongkaige正確

但是如果獲取session變量的時候,不再是name屬性,而是通過session_id來保存的:

vim /a01/apps/nginx/html/session_id.php

<?php
session_start();
$_SESSION[‘age‘]=‘huanglihua‘;
$sess_id=session_id();
var_dump($sess_id);
?>
http://192.168.10.22/session_id.php

技術分享圖片

方法二:通過ini_set() 使用memcached緩存session

上一種方法是修改的PHP配置文件,那如果我不是管理員,沒有權限修改PHP配置文件呢,這時候ini_set()可以在php網站中,設置memcached緩存session

vim /a01/apps/nginx/html/ceshiye.php

<?php
ini_set(‘session.save_handler‘,‘memcached‘);
ini_set(‘session.save_path‘,‘192.168.10.22:11211‘);
session_start();
$_SESSION[‘age‘]=‘huanglihua‘;
$sess_id=session_id();
var_dump($sess_id);
?>

技術分享圖片

Memcached緩存Session(不建議)