【发布时间】:2010-01-30 23:12:44
【问题描述】:
我运行的系统需要从存储在数据库中的数据更新各种 xml 文件。该脚本通过一个由守护进程监控的服务器端 php 文件运行,以便它执行、完成以释放资源,然后重新启动。
我在脚本中有一些基准测试,当我必须更新 100 个 xml 文件时,大约需要 15 秒才能完成。创建的典型 xml 文件大约为 6kb - 我使用 php 的 dom 创建 xml,并使用 dom->save 编写。数据库已完全规范化,并且正确的索引已经到位,我需要执行的 3 个查询获得了更新 xml 所需的必要数据,只需要大约 0.05 秒。因此,瓶颈似乎在于通过 dom 实际创建 xml 并写入文件本身。
有没有人知道如何真正加快这个过程?我考虑过使用 crc 检查来查看是否需要重写 xml,但这仍然需要我读取我将要更新的 xml 文件,而我目前不这样做,所以它肯定同样糟糕只是在旧文件的顶部保存一个新文件?另外,我认为无法编辑xml的某些部分,因为结构不统一,节点的顺序可能会根据更新后哪些数据不为空而改变。
非常感谢您对此的想法!
【问题讨论】:
-
您是否完全重建了 100 个文件中的每一个?您应该链接到几个示例文件,以便人们了解工作量。 15s 对于 100 个文件来说似乎有点太多了,但由于我们不知道它运行在哪种服务器上,所以很难说。尝试使用 XDebug + WinCacheGrind/KCachegrind 分析您的代码。
-
我同意。似乎这可以通过一个简单的 preg_replace 来实现,但确实有 nei。