我有一些服务器端 PHP 代码尝试将数据对象(本质上是多维数组)持久保存到后端数据库。该数据对象最初是作为从 flex 应用程序发送的 AMF actionscript 对象出现的。我想保留整个对象以供以后使用,所以我使用了 php 序列化函数并将对象编码为一个可以进入数据库字段的简单字符串。代码如下所示:
$serializedDataObject = base64_encode(serialize($objectInstance->myDataObject));
当我想复活这个物体并将它带回来时,我只需反向运行
$unserializedDatanObject = unserialize(base64_decode($serializedDataObject));
到目前为止,这似乎运作良好。但有时我的 php 脚本会失败。我认为它在序列化步骤中失败了。我的问题从理论上讲是什么可能导致 php 序列化和编码过程失败?数据对象数组中是否存在可能导致序列化失败的某些字符或类型的数据?
在尝试序列化之前,是否需要对数据对象进行一些按摩?
编辑:
为了澄清这个过程是这样的
我有一个 Flex/Actionscript 客户端应用程序,它将基于 AMF 的 actionscript 对象发送到服务器。在 PHP 方面,我使用 Zend AMF 库来读取 AMF 数据。可以在 PHP 中检查该对象,并且基本上看起来像一个关联多维数组。正是在这一点上,我尝试对对象进行序列化和 base 64 编码,以便我可以将对象作为编码字符串保存到数据库中。
希望这是有道理的。该问题是间歇性的,并且不容易始终如一地重现。如果我能得到一些特定的错误消息,我会在这里发布以进一步澄清。但是现在我只是想知道序列化的限制是什么来帮助我进一步调试。