session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211"
修改後重啟 PHP-FPM/Apache 即可生效。多台服務器可寫多個地址,用逗號分隔:tcp://host1:11211, tcp://host2:11211。
<?php
ini_set('session.save_handler', 'memcache');
ini_set('session.save_path', 'tcp://127.0.0.1:11211');
// 必須在 session_start() 之前調用
session_start();
// 正常使用 $_SESSION
$_SESSION['user_id'] = 123;
?>
注意: ini_set() 僅對當前腳本生效,不會修改配置文件,也不影響其他頁面。
| 特性 | Memcache | Session |
|---|---|---|
| 數據狀態 | 無狀態(Key-Value,跨用戶共享) | 有狀態(綁定特定用戶 Session ID) |
| 主要目的 | 緩解數據庫壓力、提速 | 維持用戶會話狀態 |
| 生命周期 | 由過期時間控制 | 由 session.gc_maxlifetime 控制 |
PHP 7 建議使用 memcached 擴展(而非舊 memcache),配置項為:
session.save_handler = memcached
session.save_path = "127.0.0.1:11211"