Lassen Sie meinen Lurker-Status fallen, um endlich eine Frage zu stellen ...Wie verbessert man die XML-Ladezeit von PHP?
Ich muss wissen, wie ich die Leistung eines PHP-Skripts verbessern kann, das seine Daten aus XML-Dateien bezieht.
Einige Hintergrundinformationen:
Ich habe kartiert bereits den Engpass zu CPU - aber wollen die Leistung des Skript zu optimieren, bevor ein Hit auf dem Prozessor Kosten nehmen. Der CPU-aufwendigste Teil des Skripts ist das Laden von XML.
Der Grund, warum ich XML zum Speichern von Objektdaten verwende, da die Daten über eine Flash-Oberfläche des Browsers zugänglich sein müssen und wir einen schnellen Benutzerzugriff in diesem Bereich bereitstellen möchten. Das Projekt befindet sich jedoch noch in einem frühen Stadium, und wenn Best Practice wäre, XML ganz aufzugeben, wäre das auch eine gute Antwort.
Viele Daten: Derzeit für ungefähr 100k Objekte, wenn auch in der Regel kleine, plotten - und sie müssen ALLE mit vielleicht ein paar seltenen Ausnahmen in das Skript aufgenommen werden. Der Datensatz wird nur mit der Zeit wachsen.
Häufige Läufe: Im Idealfall würden wir das Skript ~ 50k Mal pro Stunde ausführen; realistisch würden wir uns mit ~ 1k/h Läufen zufrieden geben. Dies, gekoppelt mit der Datengröße, macht eine Leistungsoptimierung absolut notwendig.
Es wurde bereits ein Optimierungsschritt durchgeführt, bei dem mehrere Läufe mit denselben Daten durchgeführt werden, anstatt sie für jeden Lauf zu laden, aber es dauert immer noch zu lange. Die Läufe sollten im Allgemeinen "frische" Daten mit den von den Benutzern vorgenommenen Änderungen verwenden.
Das würde ich vorschlagen. +1 – ceejayoz
Ja, 100k-Objekte werden besser in einer eingebetteten Datenbank gespeichert, oder eine dedizierte, wenn Sie darauf zugreifen können. Dann können Sie nur die Bits des XML generieren, die der Client benötigt. –
Zur Verdeutlichung: Die Flash-Schnittstelle und die Läufe sind vollständig getrennt, mit der Ausnahme, dass die Läufe einige Daten modifizieren, die eventuell angezeigt werden können. Die Läufe sind jedoch unabhängig davon, ob die Objekte von Benutzern abgefragt werden oder nicht. Die aus XML stammenden Daten sind in ihrem aktuellen Zustand; Wenn es an Flash gesendet wird, wird es nicht geändert. Die Benutzer haben jedoch die Möglichkeit, über die Schnittstelle Änderungen an geladenen Dateien vorzunehmen. Die Frage ist, schnellerer Benutzerzugriff nicht, aber funktioniert die Arbeit mit einer DB * beschleunigt *? Wir sind derzeit mehr besorgt darüber. – Polymeron