在会话序列化后维护XML文档状态


Maintain XML Document state after session serialization

我想存储在会话中的类实例包含一个加载的DOMDocument数组。

正如这里的一个答案所指出的:PHP的怪癖和陷阱,当您序列化包含XML的对象时,XML结构无法在未序列化过程中幸存下来。据我所知,PHP5应该自动序列化会话数据,所以我需要知道的是如何使XML在序列化/非序列化过程中幸存下来?

我已经读过了,它看起来是不可能完成的,加上使用自动序列化/反序列化写入和读取会话文件所涉及的开销,似乎更可取的是只在__sleep和__wakeup上读取和写入类实例中的XML文件。是这样吗?

http://php.net/manual/en/function.serialize.php

这对于在不丢失PHP值的类型和结构的情况下存储或传递PHP值非常有用

要序列化的值。serialize()处理除资源类型之外的所有类型。您甚至可以序列化()数组,这些数组包含对自身的引用。您正在序列化的数组/对象内部的循环引用也将被存储。任何其他参考资料都将丢失。

  • php资源是什么
  • php资源列表

也许您可以考虑将原始数据存储到memcache、数据库、
当您的会话指向该时(如memcache密钥、数据库行ID)


附加读取

你可能会为以下事情感到好笑(也许我错了)-

  • http://www.php.net/manual/en/simplexml.resources.php
  • http://www.php.net/manual/en/dom.resources.php
  • http://www.php.net/manual/en/session.resources.php

为什么不简单地将DOMDocument导出为字符串,然后序列化此字符串?