首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

Ubuntu Server 11.04 安裝 Memcached 並配置 PHP Session 存儲完整教程

     編輯:PHP 綜合知識

一、安裝 Memcached 服務端

sudo apt-get install memcached

自動啟動佔用 11211 端口。手動啟動參數:

memcached -d -m 128 -p 11211 -u memcache
參數含義
-p監聽端口
-l綁定 IP (默認 127.0.0.1)
-d start/restart/stop服務控制
-m最大內存 MB (默認 64)
-c最大連接數 (默認 1024)

二、安裝 PHP Memcache 擴展

sudo apt-get install php5-memcache

重啟 Web 服務器 (Apache/Nginx+PHP-FPM)。

三、PHP 測試 Memcache 基本操作

$mem = new Memcache;
$mem->connect('127.0.0.1', 11211);
$val = '測試數據'; $key = md5($val);
if ($mem->get($key)) {
    echo 'from cache: ' . $mem->get($key);
} else {
    echo 'from db';
    $mem->set($key, $val, 0, 120); // 120 秒過期
}

四、配置 PHP Session 存儲到 Memcached

方式 1:php.ini 全局 (需重啟)

session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211"

方式 2:.htaccess 目錄級

php_value session.save_handler "memcache"
php_value session.save_path "tcp://127.0.0.1:11211"

方式 3:代碼級 (運行時)

ini_set('session.save_handler', 'memcache');
ini_set('session.save_path', 'tcp://127.0.0.1:11211');

多服務器逗號分隔,支持參數:tcp://host:port?persistent=1&weight=2

五、驗證 Session 寫入 Memcached

# 啟動 memcached
memcached -d -m 10 -u root -l 127.0.0.1 -p 11211 -c 256 -P /tmp/memcached.pid
// set_session.php
session_start();
if (!isset($_SESSION['admin'])) $_SESSION['admin'] = 'wan';
echo $_SESSION['admin'] . "\n" . session_id();
// get_session.php
$mem = new Memcache;
$mem->connect('127.0.0.1', 11211);
var_dump($mem->get('session_id值'));
// 輸出: string(16) "admin|s:3:"wan";"

六、多域名/多服務器共享 Session

1. 統一 Cookie 域

ini_set('session.cookie_domain', '.example.com'); // 根域前加點

使 a.example.com、b.example.com 共享 PHPSESSID。

2. 統一 Session 存儲

所有服務器配置相同的 session.save_path 指向同一組 Memcached 集群。

3. 示例

// a.example.com/session.php
ini_set('session.cookie_domain', 'example.com');
session_start();
$_SESSION['admin'] = 'wan';

// b.example.com/session2.php
ini_set('session.cookie_domain', 'example.com');
session_start();
echo $_SESSION['admin']; // 輸出 wan

優缺點總結

優點缺點
內存讀寫極快,無磁盤 IO 瓶頸宕機數據丟失 (Session 可接受)
天然支持分佈式共享內存有限,需淘汰策略
減少 NFS/DB 共享存儲複雜度需監控內存使用率

總結

Ubuntu 安裝 Memcached + PHP 擴展極簡單。Session 遷移到 Memcached 只需修改 save_handler 與 save_path,多服務器共享再加 cookie_domain 即可。生產環境建議:Memcached 集群 + 持久化備份 (如 Redis AOF) + 監控報警。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved