2016-01-07 69 views
1

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

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

+0

http://php.net/manual/en/appendices.php – Sammitch

+0

@Sammitch谢谢你的回复。我已经检查过升级文档并测试了我的代码;但我的问题是关于使用会话处理的非常特定的扩展。 –

+0

我刚试过,它似乎不工作;但会喜欢文献。 –

回答

0

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

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

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

一种解决方案是不使用PHP序列和使用JSON或一些其它标准的数据序列来代替。

我们必须编写一个“翻译”步骤,可以读取两个版本的数据,并写入我们要移至的新数据序列化格式(本例中为JSON)。