Ich arbeite an einer kleinen mobilen App-Version von www.sciencedaily.com. Nur ein kleines Nebenprojekt.es muss eine Möglichkeit geben, dieses PHP schneller zu machen
ich RSS_PHP bin mit dem XML-Feeds zu greifen, und der Code Ich habe aussieht (die großen Werke), wie dies vor dem DOCTYPE:
require_once '_/rss_php.php';
$featuredRSS = new rss_php;
$healthMedRSS = new rss_php;
$mindBrainRSS = new rss_php;
$plantsAnimalsRSS = new rss_php;
$earthClimateRSS = new rss_php;
$spaceTimeRSS = new rss_php;
$matterEnergyRSS = new rss_php;
$compMathRSS = new rss_php;
$archaeoRSS = new rss_php;
$featuredRSS->load('http://www.sciencedaily.com/rss/top_news/top_science.xml');
$healthMedRSS->load('http://www.sciencedaily.com/rss/health_medicine.xml');
$mindBrainRSS->load('http://www.sciencedaily.com/rss/mind_brain.xml');
$plantsAnimalsRSS->load('http://www.sciencedaily.com/rss/plants_animals.xml');
$earthClimateRSS->load('http://www.sciencedaily.com/rss/earth_climate.xml');
$spaceTimeRSS->load('http://www.sciencedaily.com/rss/space_time.xml');
$matterEnergyRSS->load('http://www.sciencedaily.com/rss/matter_energy.xml');
$compMathRSS->load('http://www.sciencedaily.com/rss/computers_math.xml');
$archaeoRSS->load('http://www.sciencedaily.com/rss/fossils_ruins.xml');
$featuredItems = $featuredRSS->getItems();
$healthMedItems = $healthMedRSS->getItems();
$mindBrainItems = $mindBrainRSS->getItems();
$plantsAnimalsItems = $plantsAnimalsRSS->getItems();
$earthClimateItems = $earthClimateRSS->getItems();
$spaceTimeItems = $spaceTimeRSS->getItems();
$matterEnergyItems = $matterEnergyRSS->getItems();
$compMathItems = $compMathRSS->getItems();
$archaeoItems = $archaeoRSS->getItems();
Dann in den Inhalt, die ich Echo aus Ergebnisse mit klassischen Sachen wie
foreach($items as $item) {
echo $item['title'];
}
etc...
Wie gesagt, alles funktioniert wirklich gut. Aber es ist langsam als Hölle. Ich weiß, dass die Geschwindigkeit der App begrenzt sein wird, da sie die Feeds aufnehmen muss, aber es gibt keine Cache-Fähigkeit mit RSS_PHP, wie es bei SimplePie der Fall ist.
Irgendwelche Ideen zur Verbesserung der Geschwindigkeit? Vielleicht zuerst die Featured-Sachen laden, dann alles andere?
Vielen Dank im Voraus!
Müssen Sie alle Feeds gleichzeitig laden? Sie können das Laden einfach aufschieben, bis der Benutzer sie anfordert, oder die Menge begrenzen, die jeder Feed anfänglich bereitstellt. Wenn Sie dann die Liste aktualisieren müssen, können Sie einfach eine AJAX-Anforderung an Ihren Server stellen und die Benutzeroberfläche bei Bedarf neu zeichnen. Alternativ könnten Sie immer noch anfangs alles laden, aber mit AJAX, dh: Entfernen Sie das oben erwähnte Lazy Loading. – Josh
Wenn das funktioniert, gehört es zu http://codereview.stackexchange.com – Niko
Ich kenne die API hier nicht, aber diese Elemente laden seriell oder parallel? Wenn healthMed nicht startet, bis featuredItems fertig ist, möchten Sie mehrere Threads erstellen, um das Problem zu beheben. Nicht so einfach in PHP. –