php session 共享,同步

简介:
操作系统:ubuntu 7.10
web1 : apache2.24  IP:192.168.1.105
web2: apache2.24 IP:192.168.1.106
php : PHP 5.2.3
 
软件 php5-memcache memcache
web1 安装
      今天想到以前用 nfs 挂载磁盘的笨办法来解决 php session问题,效果是可以但是严重的影响了访问平台速度,今天看php官方网站无意中发现memcache,大侠不要笑我,因为,以前也没太注意此问题,好了下面开始操作。
1。安装memcached,ubuntu懒人方式当然首选 apt-get。apache php5 安装我就不多说了。 
apt-get install memcached php5-memcache
将etc/memcached.conf  中的 127.0.0.1 改成 服务器地址我这里是 192.168.1.105.可以给memcache 单建一个用户去跑服务,默认是nobody,我就不去建了。
将/etc/php5/apache2/conf.d/memcache.ini  里的 extension=memcache.so 前注释去掉。然后重启动apache2 查看 phpinfo 中的 "Registered save handlers" 会有 "files user memcache" 这3个可用。
2。然后修改 /etc/php5/apache2/php.ini
session.save_handler = memcache
session.save_path = "tcp://192.168.1.105:11211"
使用多个 memcached server 时用逗号","隔开
也可以在 .htaccess :
php_value session.save_handler "memcache"
php_value session.save_path  "tcp://192.168.1.105:11211"
再或者在某个一个应用中:
ini_set("session.save_handler", "memcache");
ini_set("session.save_path", "tcp://192.168.1.105:11211");
3.启动memcached
/etc/init.d/memcached start
 
4. 在程序中使用 memcache 来作 session 存储,用例子测试一下:
<?php
session_start();
if (!isset($_SESSION['TEST'])) {
$_SESSION['TEST'] = time();
}

$_SESSION['TEST3'] = time();

print $_SESSION['TEST'];
print "<br><br>";
print $_SESSION['TEST3'];
print "<br><br>";
print session_id();
?>
 
用 sessionid 去 memcached 里查询一下:
<?php
$memcache = memcache_connect('192.168.1.105', 11211);
var_dump($memcache->get('27f535433865c7e250d2d1062322edfd'));
?>
会有看到
string(37) "TEST|i:1219222593;TEST3|i:1219222611;" 
这样的输出,证明session正常工作了。
 
apt-get install php5-memcache
然后修改/etc/php5/apache2/conf.d/memcache.ini 
将extension=memcache.so 前注释去掉。
然后修改/etc/php5/apache2/php.ini
session.save_handler = memcache
session.save_path = "tcp://192.168.1.105:11211"
同样可以用上面的例子做测试.
 
总结
用 memcache 来存储 session 在读写速度上会比 files 时快很多,
而且在多个服务器需要共用 session 时会比较方便,将这些服务器都配置
成使用同一组 memcached 服务器就可以,减少了额外的工作量。
缺点是 session 数据都保存在 memory 中,持久化方面有所欠缺,

但对 session 数据来说也不是很大的问题.



本文转自Deidara 51CTO博客,原文链接:http://blog.51cto.com/deidara/93887,如需转载请自行联系原作者

相关文章
|
3月前
|
存储 安全 PHP
php案例 解决cookie失效后使用session的问题
php案例 解决cookie失效后使用session的问题
php案例 解决cookie失效后使用session的问题
|
3月前
|
存储 PHP 数据库
PHP会话技术session我不允许还有人不会!
PHP会话技术session我不允许还有人不会!
21 0
|
9月前
|
存储 缓存 安全
PHP快速入门07-Cookie与Session的说明与使用
PHP快速入门与实战Cookie和Session是一个Web开发几乎不可避免的东西,是网站开发的核心内容,HTTP是无状态的协议,正是Cookie和Session的存在,才保证了网站等应用场景的身份认证和前后数据联系。今天本小节讲解他们在PHP中的使用方式。以上就是关于本篇文章介绍的内容,Cookie与Session,后续更多内容将收录在专栏PHP快速入门与实战。
|
9月前
|
测试技术 API PHP
php对接小鹅通API开发高级实战案例解析:小鹅通实战开发之合并用户user_id批量同步
php对接小鹅通API开发高级实战案例解析:小鹅通实战开发之合并用户user_id批量同步
173 0
|
9月前
|
Linux API PHP
php定时将API中的数据每N分钟同步录入数据库的解决方案
php定时将API中的数据每N分钟同步录入数据库的解决方案
66 0
|
9月前
|
JSON 关系型数据库 MySQL
漏刻有时API接口实战开发系列(7):PHP将API获取的json数据自动同步到mysql数据库的解决方案
漏刻有时API接口实战开发系列(7):PHP将API获取的json数据自动同步到mysql数据库的解决方案
320 0
|
11月前
|
存储 安全 程序员
PHP session反序列化
PHP session反序列化
148 0
|
存储 SQL 安全
PHP中的session安全吗?底层原理是什么?
PHP中的session安全吗?底层原理是什么?