【问题标题】:PHP XML performance and serialize()PHP XML 性能和 serialize()
【发布时间】:2011-12-12 09:43:57
【问题描述】:

我有一个 XML 文件,其中包含一些对象的结构。对象是这样的:

class Object:
{
  private $name;
  private $info;
  private $$items;
}

$items 是一个对象数组,所以它是递归的。 到目前为止,当我必须列出项目时,我使用 simplexml 在元素中进行迭代并显示它们。 我的问题是:

1) 如果我解析 XML 并将数据转换为对象,而不是使用纯 XML,它会对页面的整体性能产生太大影响吗?考虑到用户加载的每个页面都必须加载项目,它会不会太慢?

2) 像我定义的那样 serialize() 一个递归对象是个好主意吗?

【问题讨论】:

    标签: php xml performance serialization


    【解决方案1】:

    SimpleXML 不能被序列化,因为它被认为是一种资源。但是,您可以轻松获取 $sx->toXML(); 的输出并对其进行序列化,一旦您对它们进行反序列化,就可以重新构造 SimpleXMLElement(s)。

    除非您使用非常大的 XML 树,否则重新解析 XML 的性能差异不是很大。

    关于您的对象,您还可以实现 __sleep()__wakeup() 魔术方法,这将允许您在对象分别被序列化和反序列化之前对其进行更改。

    序列化递归对象示例时,不要在__sleep() 魔术方法中包含$$items 变量,并在__wakeup 中重新实现它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-01
      • 1970-01-01
      • 2014-05-20
      相关资源
      最近更新 更多