Question

Je commence à développer une application Web en PHP qui, je l’espère, deviendra incroyablement populaire et me rendra célèbre et riche. : -)

Si cela se produit, ma décision d'analyser les données de l'API sous forme XML avec SimpleXML ou d'utiliser json_decode pourrait avoir une incidence sur l'évolutivité de l'application.

Quelqu'un sait-il laquelle de ces approches est la plus efficace pour le serveur?

Mise à jour: , j'ai effectué un test rudimentaire pour déterminer la méthode la plus performante. Il semble que json_decode soit légèrement plus rapide que simplexml_load_string . Ce n'est pas très concluant, car cela ne teste pas des choses comme l'évolutivité des processus concurrents. Ma conclusion est que je vais utiliser SimpleXML pour le moment en raison de sa prise en charge des expressions XPath.

<?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>

Résultat:

XML elapsed: 9.9836
JSON elapsed: 8.3606
Était-ce utile?

La solution

En tant que "plus léger" En termes de format, je m'attendrais à ce que JSON soit légèrement moins stressant pour le serveur, mais je doute que ce soit le plus gros problème de performances auquel vous ayez à faire face à mesure que votre site gagne en popularité. Utilisez le format qui vous convient le mieux.

Sinon, si vous savez comment vous allez structurer vos données, vous pouvez essayer de créer une version au format XML et une version au format JSON et de simplement l'exécuter contre votre configuration plusieurs centaines de milliers de fois différence notable.

Autres conseils

Il n'y a qu'un seul moyen de déterminer lequel de vos données sera le plus facile pour votre serveur dans votre application.

Testez-le!

Je générerais des données similaires à celles que vous traduirez et utiliserais l'un des frameworks de tests unitaires pour les décoder plusieurs milliers de fois à l'aide de SimpleXML et de json_decode, suffisamment pour obtenir des résultats significatifs. Et ensuite, vous pourrez nous dire ce qui a fonctionné.

Désolé, ce n’est pas exactement le type de réponse que vous recherchiez, mais en réalité, c’est la seule façon de le faire. Bonne chance!

Ce n'est pas vraiment une réponse à la question, mais vous pouvez simplement attendre que de nombreux utilisateurs accèdent à votre système. Vous pourriez être surpris de savoir où se situent vos goulets d'étranglement:

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top