2010-10-29 27 views
1

HI,Comment puis-je optimiser ma sortie xml afin que le temps de transfert de données soit plus faible?

J'ai un cron qui appelle une URL API de base. La sortie est xml donc j'utilise le file_get_contents() de php pour obtenir les données à traiter.

Ma question est, est-ce que le format de sortie du fichier XML fait une différence dans le temps de transfert d'un serveur à l'autre? Le cron fonctionne toutes les dix minutes et je ne veux pas que les crons se chevauchent à un moment donné parce que le traitement des données est sensible au temps.

ex:

<?xml version="1.0"?><api><data>sometext here</data></api><!-- As one line --> 

<?xml version="1.0"?> 
<api> 
    <data>sometext here</data> 
</api> <!-- As multiple lines --> 

Notez que ceci est seulement un exemple XML, les données de la mine rend la sortie xml 2000+ lignes.

Je l'ai testé et il semble que ce soit la même chose (peut-être quelques microsecondes) pour tout type de xml. Y a-t-il un moyen d'accélérer cela?

Répondre

1

Si vous ne coupez pas votre sortie XML Longueur elle-même je ne vois pas de possebilité pour une grande accélération.

Supprimer les espaces inutiles pour le transport est très utile car cela pourrait réduire la vitesse de transport. même si ce n'est pas ça. plus votre xml est long et plus vous avez d'espaces blancs inutiles (inutile pour analyser le xml, seulement utilisé pour la lisibilité humaine), plus vous gagnerez. Si vous avez une hirarchie profonde et de nombreux espaces blancs pour la rendre lisible, alors vous aurez gain de cause. Si ce n'est pas le cas, le décapage ne réduira pas la vitesse de transfert.

La seule façon dont je verrais est de générer des données XML plus petites.

+0

merci pour votre réponse. La vitesse de transfert n'est pas tellement meilleure mais c'est quand même rapide car ma requête est réécrite pour être plus rapide. –

0

Peut-être que vous pourriez essayer une compression comme gzip.

0

Compressez vos pages à l'aide de gzip. Vous pouvez le faire via mod_gzip (module apache) ou si vous utilisez PHP, définissez zlib.output_compression = On dans php.ini. Cela va compresser votre contenu en clair à ~ 20% de sa taille d'origine.

En outre, si vous êtes préoccupé par les données absolues les plus petites possibles, au lieu de XML, vous pouvez l'envoyer en utilisant JSON.

+0

J'ai décidé sur xml parce que conceptuellement il gère mieux que JSON pour moi et je peux vider la sortie XML directement dans une base de données locale. –