但不知何故,我想我可能误解了Memcached对PHP会话的可能性的意义.
我以为我能够站在Apache 1 a.domain.com上,并创建一个会话,例如$_SESSION [‘test’] =“此字符串保存在会话中”,然后转到Apache 2 b.domain.com或c.domain.com,只需继续该会话并键入echo $_SESSION [‘test’];并输出该字符串.
它不是,但我确信,我被告知,如果您有多个网络服务器共享相同的会话,memcached将是一个伟大的工具.
我做错了什么?
顺便一提.我们认真地需要一个完整的教程或电子书来描述如何设置服务器,使用PHP,构建基于Memcached的集群等.
session.save_path =“192.168.100.228:11211”
教程告诉我不要定义一个协议,并且ip地址已经被给予了Apache 3-memcached服务器
这是PHPinfo()的形象
session.cookie_domain中的域不称为域,但它是.local.
为此图像已更改.
编辑:
只是为了信息.当我使用简单的基于Memcached的PHP命令时 – 一切都很完美.但是不知何故当我尝试保存会话时,memcached服务器不存储该项目.
这样做:
<?PHP $m = new Memcached(); $m->addServer('192.168.100.228',11211); $m->set('int',99); $m->set('string','a simple string'); $m->set('array',array(11,12)); /* expire 'object' key in 5 minutes */ $m->set('object',new stdclass,time() + 300); var_dump($m->get('int')); var_dump($m->get('string')); var_dump($m->get('array')); var_dump($m->get('object')); ?>
这不行
<?PHP session_start(); $_SESSION['name'] = "This is a simple string."; ?>
编辑2:解决方案
我注意到,在删除包括Cookie等的缓存历史记录之后,浏览器没有完成该作业.问题仍然存在,因为它挂在原来的个人会话ID上,这使得每个子域彼此分离.
这里定义的所有内容都是正确的,只要确定您的浏览器会重新设置Cookie. >.<
session.cookie_domain = ".domain.com"
另见这里
Allow php sessions to carry over to subdomains
进行更改后,请确保重新启动网络服务器并清除所有浏览器Cookie.如果您的Cookie名称相同但子域不同,您的浏览器可能会感到困惑.
其他要检查的东西:
这些会话在每个单独的服务器上工作正常.
确保会话处理程序设置正确使用PHPinfo()如果你正在使用一个大的代码库,特别是继承/第三方的东西可能会有东西超越它.
如果您使用第三方代码(例如PHPbb),请检查Cookie设置是否正确.
(请注意,这个答案整理去除头脑风暴,保留所有相关信息)