【发布时间】:2014-03-26 16:35:39
【问题描述】:
我做了一个自动excel到MySQL的转换器模块来建立一个基于PHP的自目录网站。但我在自动更新它的站点地图时遇到了一个严重的问题。
转换工作会持续一整天,Google 的爬虫可能会随时获取站点地图文件。因此,每次转换成功的条目时,我都会设法更新站点地图的 XML 文件,但是每次转换都使用 DOM 或 simpleXML 更新大型 XML 文件的成本很高,因为所有数据首先加载到 RAM 并再次写入文件!
我决定像这样使用“file_put_contents”来加速:
file_put_contents($xmlFile, $currentData, FILE_APPEND | LOCK_EX);
但问题是每个文件都以</urlset> 结尾并删除最后一行需要使用具有相同问题的fopen() 和fseek,加载整个文件!
是否有任何可能的方式来修改文件的最后一行而不将整个内容加载到 RAM 或其他方式将新标签附加到 XML 文件而不加载整个标签?
【问题讨论】: