Frage

Ich beginne eine Web-Anwendung in PHP zu entwickeln, die ich geworden hoffen unglaublich beliebt und machen mich berühmt und reich. : -)

Wenn die Zeit kommt, meine Entscheidung, ob die API-Daten als XML mit SimpleXML zu analysieren oder json_decode zu verwenden, um einen Unterschied in der Skalierbarkeit der App machen könnte.

Wer weiß, welche diese Ansätze effizienter für den Server ist?

Update: laufe ich einen rudimentären Test, um zu sehen, welche Methode performanter war. Es scheint, dass json_decode ist etwas schneller ausführt als simplexml_load_string. Das ist nicht sehr schlüssig, weil es wie die Skalierbarkeit der gleichzeitigen Prozesse nicht Dinge testen. Meine Schlussfolgerung ist, dass ich mit SimpleXML für den Augenblick wegen seiner Unterstützung für XPath-Ausdrücke gehen.

<?php

$xml  = file_get_contents('sample.xml');
$json = file_get_contents('sample.js');

$iters = 1000;

// simplexml_load_string
$start_xml = microtime(true);
for ($i = 0; $i < $iters; ++$i) {
    $obj = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);
}
$end_xml = microtime(true);

// json_decode
$start_json = microtime(true);
for ($i = 0; $i < $iters; ++$i) {
    $obj = json_decode($json);
}
$end_json = microtime(true);

?>
<pre>XML elapsed: <?=sprintf('%.4f', ($end_xml - $start_xml))?></pre>
<pre>JSON elapsed: <?=sprintf('%.4f', ($end_json - $start_json))?></pre>

Ergebnis:

XML elapsed: 9.9836
JSON elapsed: 8.3606
War es hilfreich?

Lösung

Wie das „leichtere“ Format, würde ich JSON erwartet auf dem Server etwas weniger stressig sein, aber ich bezweifle, wird es das größte Performance-Problem sein, das Sie sich mit dem Umgang finden, wie Sie Ihre Website in der Popularität wächst. Verwenden Sie je nachdem, was Format Sie sind bequemer mit.

Alternativ, wenn Sie wissen, wie Sie Ihre Daten strukturieren sein werden, könnten Sie versuchen, eine XML-formatierte Version und eine JSON-formatierte Version machen und führen Sie es nur gegen das Setup ein paar hunderttausend Mal zu sehen, ob es eine macht merklicher Unterschied.

Andere Tipps

Es gibt nur einen Weg, um zu bestimmen, welche auf Ihrem Server in Ihrer Anwendung mit Ihren Daten einfacher sein wird.

Test it!

würde ich einige Daten zu erzeugen, die ähnlich sieht, was man übersetzen und eine der Einheit Test-Frameworks benutzen, wird es ein paar tausend mal aussagekräftige Ergebnisse mit jeweils SimpleXML und json_decode, genug, um zu entschlüsseln. Und dann können Sie uns sagen, was funktioniert hat.

Leider ist dies nicht genau die Art von Antwort, die Sie suchen, aber in Wirklichkeit ist es der einzig richtige Weg, es zu tun. Viel Glück!

Nicht wirklich eine Antwort auf die Frage, aber man konnte nur warten, bis Sie viele Benutzer trifft Ihr System haben. Sie werden überrascht sein, wo Ihre Engpässe tatsächlich liegen:

http://gettingreal.37signals.com/ch04_Scale_Later.php

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top