PHP:使用asXML()将XML文件转换为更快的file_get_contents或simplexml_load_file

gfo*_*org 6 php xml web-services simplexml

我正在编写一个代理服务来缓存我的移动应用程序对webservice的查询.(就像中间的男人)

我构建的代理站点的任务是将从应用程序获取的查询传递给第三方Web服务,并将来自第三方Web服务的响应保存为XML文件,并从XML文件中读取相同查询的所有后续调用并提供响应(基本上缓存响应 - 使用Php,curl和simplexml_load_file).

现在我的问题是 - 读取xml文件并返回字符串的推荐方法什么.

选项1: $ contents = file_get_contents($ filename); echo $ contents;

选项2: $ xml = simplexml_load_file($ filename)echo $ xml-> asXML();

Vol*_*erK 4

readfile($filename);
Run Code Online (Sandbox Code Playgroud)

file_get_contents/echo 首先将整个内容读取到 php 进程的内存中,然后将其发送到输出流。如果您只想转发内容,则无需将整个内容存储在内存中。
simplexml_load_file() 不仅将整个内容读取到内存中,而且还解析文档,这需要额外的时间。如果您不想从文档中获取特定数据或测试/修改它,则同样没有必要。

readfile()将内容直接发送到输出流,并且可以“以任何合适的方式”执行此操作。即,如果支持可以使用内存映射文件,如果不支持,它至少可以读取较小块的内容。