我们选择redis数据库, 因为redis 在php有C的支持,并且库依赖很少, 安装使用都比较方便。
web集群运行php, 是*定要解决session的共享问题的, nfs文件共享等方案在速度和实时性上都不是很好。
安装redis后, 发现phpinfo里显示可以把session 存放在redis服务器里面。这样,在速度和实时性上就解决问题了。
redis安装和配置在debian下很简单, redis跟其它的库也没有什么依赖关系, debian6下的redis版本很低, 因为只依赖libc,所以可以把 debian7的二进制包直接拿过来用。
配置文件 /etc/redis/redis.conf 改*下使用内存大小,绑定端口, 就可以了。
在使用redis存储session的过程中, 只出现过*次小问题,提示mediawiki不能open session文件, mediawiki 会把 redis的url 当成文件目录来操作。
看mediawiki的includes/Globalfunction.php 发现它会强制修改session的存储方式为files, 但是存储path没有进行处理。
增加*句语句, 修正*下path:
--- mediawiki/includes/GlobalFunctions.php.orig 2012-03-19 17:26:22.647648907 +0800
+++ mediawiki/includes/GlobalFunctions.php 2012-03-19 17:28:55.866562219 +0800
@@ -2660,6 +2660,8 @@
# If it's left on 'user' or another setting from another
# application, it will end up failing. Try to recover.
ini_set ( 'session.save_handler', 'files' );
+ if(substr(ini_get('session.save_path'),0,6) == 'tcp://')
+ ini_set('session.save_path', '/var/lib/php5');
}
$httpOnlySafe = wfHttpOnlySafe();
wfDebugLog( 'cookie',
看mediawiki的includes/Globalfunction.php 发现它会强制修改session的存储方式为files, 但是存储path没有进行处理。
增加*句语句, 修正*下path:
--- mediawiki/includes/GlobalFunctions.php.orig 2012-03-19 17:26:22.647648907 +0800
+++ mediawiki/includes/GlobalFunctions.php 2012-03-19 17:28:55.866562219 +0800
@@ -2660,6 +2660,8 @@
# If it's left on 'user' or another setting from another
# application, it will end up failing. Try to recover.
ini_set ( 'session.save_handler', 'files' );
+ if(substr(ini_get('session.save_path'),0,6) == 'tcp://')
+ ini_set('session.save_path', '/var/lib/php5');
}
$httpOnlySafe = wfHttpOnlySafe();
wfDebugLog( 'cookie',