使用CFPropertyList处理大型.plist文件

时间:2011-07-04 13:01:40

标签: php xml plist

我正在使用https://github.com/rodneyrehm/CFPropertyList中的CFPropertyList来处理我用PHP添加的内容。

这一切都运行良好,但现在添加了所有内容,我的文件大约有700KB,这个数据不大但似乎足以让Apache在尝试保存文件时崩溃。

  

child pid 1278退出信号分段错误

我在CacheGrind中看到,我的应用程序中有很多时间是通过调用CFPropertyList-> import()和CFDictionary-> toXML()来实现的,那么哪里可能成为瓶颈?

我是否立刻做了很多改变?我应该在更改之间加载()和save()以避免一次保存太多更改吗?

有任何线索吗?

2 个答案:

答案 0 :(得分:1)

我不认为这是造成问题的大小,而是PHP中的错误。仅当PHP本身存在严重错误时才会发生段错误。

接下来的步骤:

  • 首先,升级到最新的PHP版本(5.3.6)
  • 如果不再发生,请感到高兴
  • 它仍然发生:
    • 使用不超过20行的PHP脚本重现问题。
    • 将问题报告给bugs.php.net

答案 1 :(得分:0)

在未知大小的文档中实现searchNode()函数时,应始终使用“depth”参数来避免在文档中单步调试并在递归循环中大量调用函数。

因为这会创建无限循环,这也会导致PHP中的段错误,但不会以致命错误或警告结束。