phpbar.de logo

Mailinglisten-Archive

[php] Skriptausführung im Hintergrund

[php] Skriptausführung im Hintergrund

Niels Jäckel niels.jaeckel at silice.de
Son Feb 19 14:16:17 CET 2006


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