Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP: XML file to string which is faster file_get_contents or simplexml_load_file with asXML()

I am writing a proxy service for caching the queries that my mobile app makes to webservice. (like a man in the middle)

The task of proxy site I have built is pass the query it gets from the app onto third party webservice and save the response from the third party webservice as an XML file and for all subsequent calls for the same query read from the XML file and provide the response (basically caching the response -using Php, curl and simplexml_load_file).

Now my question is - What is the recommended way to read an xml file and return the string.

option 1: $contents = file_get_contents($filename); echo $contents;

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

like image 572
gforg Avatar asked Sep 09 '10 05:09

gforg


1 Answers

readfile($filename);

file_get_contents/echo first reads the entire contents into the php process' memory and then sends it to the output stream. It's not necessary to have the entire content in memory if all you want to do id to forward it.
simplexml_load_file() not only reads the entire content into memory, it also parses the document which takes additional time. Again unnecessary if you don't want to get specific data from the document or test/modify it.

readfile() sends the content directly to the output stream and can do so "any way it see's fit". I.e. if supported in can use memory mapped files, if not it can at least read the contents in smaller chunks.

like image 109
VolkerK Avatar answered Oct 04 '22 01:10

VolkerK