Laisser tomber mon statut de lurker pour enfin poser une question ...Comment améliorer le temps de chargement XML de PHP?
J'ai besoin de savoir comment je peux améliorer les performances d'un script PHP qui tire ses données à partir de fichiers XML.
Un peu d'histoire:
Je l'ai déjà mis en correspondance le goulot d'étranglement à la CPU - mais qui veulent optimiser les performances du script avant de prendre un coup sur les coûts de traitement. Plus précisément, la partie du script la plus consommatrice de CPU est le chargement XML. La raison pour laquelle j'utilise XML pour stocker des données d'objet parce que les données doivent être accessibles via une interface de navigateur Flash, et nous voulons fournir un accès utilisateur rapide dans ce domaine. Le projet n'en est encore qu'à ses débuts, donc si la meilleure pratique serait d'abandonner complètement le XML, ce serait aussi une bonne réponse. Beaucoup de données: Tracer actuellement pour environ 100k objets, mais généralement de petite taille - et ils doivent tous être repris dans le script, à quelques rares exceptions près peut-être. L'ensemble de données ne fera que croître avec le temps. Essais fréquents: Idéalement, nous exécuterions le script ~ 50k fois par heure; De manière réaliste, nous nous contenterions de courses de ~ 1k/h. Ceci, associé à la taille des données, rend l'optimisation des performances absolument indispensable.
Déjà effectué une étape d'optimisation consistant à effectuer plusieurs passages sur les mêmes données plutôt que de les charger pour chaque exécution, mais cela prend encore trop de temps. Les analyses doivent généralement utiliser des données "fraîches" avec les modifications effectuées par les utilisateurs.
C'est ce que j'allais suggérer. +1 – ceejayoz
Oui, les objets 100k sont mieux conservés dans une base de données intégrée, ou un objet dédié si vous pouvez y accéder; alors vous pouvez générer seulement les bits du xml dont le client a besoin. –
Pour clarifier: L'interface Flash et les exécutions sont complètement séparées, sauf que les exécutions modifient certaines données qui seront éventuellement affichées. Mais les exécutions sont indépendantes de si les objets sont ou non interrogés par les utilisateurs. Les données provenant de XML sont dans leur état actuel; lorsqu'il est envoyé à Flash, il n'est pas modifié. Les utilisateurs ont cependant la possibilité d'apporter des modifications aux fichiers chargés via l'interface. La question est, en dépit de l'accès plus rapide de l'utilisateur, est-ce que travailler avec une base de données accélère le * runs *? Nous sommes plus préoccupés par cela actuellement. – Polymeron