PHP-php 多服务器时数据怎么保存在session中共享

PHP-php 多服务器时数据怎么保存在session中共享

偏爱自由 发布于 2017-09-19 字数 69 浏览 1125 回复 4

php中,多服务器时,保存在session里的数据有时会找不到,怎么解决

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

想挽留 2017-11-09 4 楼

使用MEMCACHE来保存吧,多台前端,多台MEMCACHE来共享SESSION的配置方法如下:

<?php
ini_set('session.save_handler', 'memcache');
ini_set('session.save_path', 'tcp://127.0.0.1:12345?persistent=1&weight=1&timeout=1&retry_interval=15,tcp://127.0.0.2:12345?persistent=1&weight=1&timeout=1&retry_interval=15');
session_start();
?>

想挽留 2017-10-16 3 楼

最简单的方法,是通过 memcache 来实现,多台机器共用一个memcache
这样还有一个意外的好处,就是在并发大访问的情况下,还能防止单台机器,因为反复创建和打开SESSION文件,造成的IO压力,之前测试过,对于缓实IO压力很有效。

偏爱自由 2017-09-24 2 楼

一个是各个服务器对同一个客户端产生的 SESSION ID 必须相同,并且可通过同一个 COOKIE 进行传递,也就是说各个服务器必须可以读取同一个名为 PHPSESSID 的 COOKIE;另一个是 SESSION 数据的存储方式/位置必须保证各个服务器都能够访问到。简单地说就是多服务器共享客户端的 SESSION ID,同时还必须共享服务器端的 SESSION 数据。

第一个实现:COOKIE 的域(domain)进行特殊地设置,设置成“.域名”:ini_set('session.cookie_domain', '.域名');

第二个实现:把SESSION 数据保存到数据库里 ,这样各个服务器就可以方便地访问同一个数据源,获取相同的 SESSION 数据了

浮生未歇 2017-09-19 1 楼

1.通过NFS文件共享的方式,多台WEB服务器共享保存session文件的磁盘
2.保存在数据库中,这种方式的扩展性很强,可以随意增加WEB而不受影响
3.可以将session数据保存在memcached中,memcached是基于内存存储数据的,性能很高,用户并发量很大的时候尤其合适,参考PHP实现多服务器session共享之memcache共享
4.文件方式保存session时,可以采用php的扩展eaccelerator来存储sesion,参考
eaccelerator 应用之“使用共享内存存储Session”。