memcached是一套分布式的快取系统,当初是DangaInteractive为了LiveJournal所发展的,但被许多软件(如MediaWiki)所使用。这是一套开放源代码软件,以BSDlicens
更改为:
session.save_handler= memcache
session.save_path="tcp://127.0.0.1:11211?persistent=1&weight=1&timeout=1&retry_interval=15"
如果memcahced使用的是公网服务器的话最好使用其公网地址
保存退出并重启服务
[root@testhtdocs]# /etc/init.d/php-fpm restart
Gracefullyshutting down php-fpm . done
Startingphp-fpmdone
创建测试页setsession.php
[root@testhtdocs]# cat setsession.php
session_start();
if(!isset($_SESSION['test'])) {
$_SESSION['test'] = time();
}
print$_SESSION['test'];
print"
";
print"Session ID: " . session_id();
?>
新建php页面showsess.php,获取当前用户的会话ID:
[root@testhtdocs]# cat showsess.php
session_start();
$memcache_obj= new Memcache;
$memcache_obj->connect('127.0.0.1',11211);
$mysess=session_id();
var_dump($memcache_obj->get($mysess));
$memcache_obj->close();
?>
而后找一其他主机,使用负载均衡轮询到不同的主机上,可以发现无论刷新至哪个页面 其用户的session是一样的
访问setsession.php
1399775256 #为获取时间
Session ID: 9a0itlgjlurghq83ibvmol5pc7 #为session的id号
获取session
可以看到其时间是与上面setsession是一样的
总结
这样一来比php将session保存在本地效率要快很多,,如果以后要使用多台memcached的话至于开发程序能否实现负载均衡,到底是使用取余的算法还是使用一致性哈希的算法完全要看开发人员的决定了
感谢各位。
本文出自 “心情依旧” 博客,请务必保留此出处