php 5.3 - > 5.6 memcacheD扩展会话兼容性问题

时间:2016-01-07 18:16:50

标签: php memcached

当我从php 5.3升级时 - > php 5.6并使用相同版本的memcacheD扩展,并使用相同的序列化和配置设置,会话不再有效。

即使设置相同;我的会话数据在php版本升级之间不会持续存在。 (我有负载平衡的服务器,并能够在它们之间进行测试)

1 个答案:

答案 0 :(得分:0)

PHP序列化在PHP 5.3和5.6之间不兼容。 PHP破坏更改说:" unserialize()现在将失败,如果传递已被操纵的序列化数据以尝试实例化对象而不调用其构造函数。"

但是,当一个版本反序列化另一个版本的序列化时,我发现序列化通常会被破坏。我们遇到了这个问题,其中序列化数据缓存在Memcached和数据库记录中,其中多个版本的PHP试图访问相同的序列化数据。

http://php.net/manual/en/migration56.changed-functions.php

解决方案是不使用PHP序列化,而是使用JSON或其他标准化数据序列化。

我们必须写一个"翻译"可以读取两个版本的数据并写入我们要迁移到的新数据序列化格式的步骤(在我们的实例中为JSON)。