Mailinglisten-Archive |
Hallo Julian, > Ich gebe auf einer Seite eine komplizierte Mysqlabfrage mit "Blätterfunktion" > aus. Die Abfrage dauert ca. 4 Sekunden. Ich würde nun gerne den Blättervorgang > auf Benutzerseite beschleunigen, damit der Benutzer nicht so lange warten muß. > Die einzige Lösung dafür ist eine Art "Pre-Cache". Diese müsste allerdings im > Hintergrund ablaufen, damit die Ladezeit der aktuell anzuzeigenden Seite nicht > um die Ladezeit der vorzucachenden Seiten verlängert wird. Skriptausführung im Hintergrund wäre bei ausreichenden Rechten z.B. mit `nohup php dosql.php &` möglich. (ungetestet!) Die Ergebnisse müsstest du dann in einen Cache oder ins SHM schreiben. Ich würde allerdings auf der ersten Seite die gesamte Abfrage durchführen, und alle Ergebnisobjekte serialisiert in einer Session o.ä. speichern. Beim vor- oder zurückblättern wird dann aus diesem Cache der entsprechende Range ermittelt und ausgegeben. Damit wird zwar genau das getan was du verhindern willst, aber alle Weiteren Seiten sind in diesem Falle nahezu sofort da. Allerdings wäre vielleicht auch eine Optimierung an anderer Stelle möglich. Schließlich sind 4s SQL-Abfrage schon eine ganze Menge ;-) Vielleicht ist es möglich die DB-Struktur anzupassen oder die Abfrage zu optimieren. Grüße, Niels
php::bar PHP Wiki - Listenarchive