使用多个memcache服务器保存PHP会话变量

时间:2017-10-30 04:57:42

标签: php session memcached redundancy

我多年来一直使用memcache存储PHP会话,喜欢它。性能很好,它不会在磁盘上创建数千个文件。

我已经在Debian上运行了PHP 5.6。

PHP session instructions之后,您需要在php.ini文件中添加两个添加两个条目,以获取存储在memcache中的会话。像这样:

session.save_handler = memcache
session.save_path = "tcp://192.168.1.100:11211" 

我已经做到了,多年来一直很努力。

我能做的不是定义多个服务器。同一个PHP文档页面说你应该能够像这样定义多个服务器:

session.save_path = "tcp://192.168.1.100:11211,tcp://192.168.1.101:11211" 

我相信当您定义多个服务器时,PHP应该将会话数据写入每个服务器 - 因此您有冗余。我想要那种冗余。

我的问题是,一旦我定义了多个服务器,PHP就会停止工作并转储如下错误:

session_start(): Failed to initialize storage module: memcache (path: tcp://192.168.1.100:11211,tcp:192.168.1.101:11211)

我可以单独使用任何一个memcache服务器和PHP,所以我知道它们都在工作,如果单独定义,PHP可以连接到它们。那么当我定义两者时,PHP的问题是什么?

1 个答案:

答案 0 :(得分:0)

您需要在session_redundancy中为Memcache PHP扩展设置memcache.ini

  

memcache.session_redundancy指令必须等于数字   memcached servers + 1用于要复制的会话信息   到所有的服务器。这是由于PHP中的一个错误。

请参阅this post