php session儲存到檔案、memcache或redis
儲存在檔案
修改php.ini
session.save_handler = files
session.save_path = “/home/logs/session”
或者在php程式碼中
ini_set(“session.save_handler”, “files”);
ini_set(“session.save_path”, “/home/logs/session″);
儲存在memcache
修改php.ini
session.save_handler = “memcache”
memcache.hash_strategy = “consistent” // 設定memcache的hash演算法
session.save_path = “tcp://localhost:11211” // 設定session儲存的位置,多臺memcache用逗號隔開,比如”tcp://localhost:11211?weight=30,tcp://localhost:12000”
或者在php程式碼中
ini_set(“session.save_handler”, “memcache”);
ini_set(“session.save_path”, “tcp://127.0.0.1:11211″);
儲存在redis
session.save_handler = redis
session.save_path = “tcp://localhost:6379”
或者在php程式碼中
ini_set(“session.save_handler”, “redis”);
ini_set(“session.save_path”, “tcp://localhost:6379″);
如果在redis配置中設定了連線密碼requirepass,save_path設為”tcp://localhost:6379?auth=pwd”
// 測試程式碼
session_start();
$_SESSION['sessionid'] = 'session content';
echo $_SESSION['sessionid']; echo '<br/>';
$redis = new Redis();
$redis->connect("127.0.0.1","6379");
//redis用session_id作為key並且是以string的形式儲存
echo 'session_id:' . session_id(); echo '<br>';
echo $redis->get('PHPREDIS_SESSION:' . session_id());
輸出
session content
session_id:jd7qn0c4lnn39fs3p9gt1fjve0
sessionid|s:15:"session content";
最後,別忘了重啟php-fpm和nginx
/etc/init.d/php-fpm restart
/usr/nginx/sbin/nginx -s reload