phpbar.de logo

Mailinglisten-Archive

[php] Skriptausführung im Hintergrund

[php] Skriptausführung im Hintergrund

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Son Feb 19 14:18:52 CET 2006


Hi Julian,

Am Sonntag, 19. Februar 2006 14:06 schrieb Julian Schwarz:
> 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.
>
> Mein Lösungsansatz:
> Der Benutzer ruft die erste Seite auf. Mittels PHP wird die Sql-Abfrage für
> die nächste Seite erzeugt, in eine Datei geschrieben. Ein zweites Skript
> (was irgendwie im Hintergrund läuft) wird aufgerufen. Dieses holt die
> nächste Sql-Abfrage und führt diese aus.
> Wenn nun der Benutzer auf die zweite Seite blättert kommt das
> Abfrageergebnis sofort - dank des Mysql-Query-Cache. Gleichzeitig wird der
> Precachevorgang für die nächste Seite wiederholt.
>
> Das Problem
> ...ist die Skriptausführung im Hintergrund. Ist das möglich? Oder hat
> jemand möglicherweise ein ähnliches Problem schonmal gelöst?

ja, habe ich. Allerdings weiß ich nicht, inwieweit sich das für Dich und für 
Websites mit vielen gleichzeitigen Zugriffen eignet. auf meiner Website 
funktioniert es aber perfekt.

Auf meiner Website habe ich eine Suche für Links und Bilder. Für die Suche 
habe ich eine eigene Datenbanktabelle, die dann auf der Basis der 
Benutzereingaben durchsucht wird. Ich hole aber aus der Datenbank nur die IDs 
der gefundenen Datensätze und das Eigenschaftsmerkmal Bild oder Link, um die 
zurückzuliefernde bzw. zurückgelieferte Datenmenge so gering wie möglich zu 
halten.

Ich hole beim Abschicken des Suchformulars alle Treffer aus der Datenbank und 
lege die IDs in der Session ab. Anschließend, auch wenn auf Seite 1 des 
Suchergebnisses zurückgesprungen wird, navigiert der Anwender bei mir dann 
nur noch durch die Trefferliste in der Session. Das gilt auch, wenn er 
zwischenzeitlich woanders auf der Website unterwegs war, und dann in das 
Suchergebnis zurückkehrt, ohne eine neue Suche auszuführen.

Über die IDs, die ich in der Trefferliste in der Session abgelegt habe, binde 
ich dann fertig generierte Dateischnipsel in die Suchergebnisseite ein. Pro 
Link bzw. Bild gibt es einen solchen, der über die ID im Dateinamen 
identifizierbar ist.

Die Dateischnipsel generiere ich immer dann, wenn ich die Suche-Tabelle neu 
aufbaue. :-)


Viele Grüße
Lutz

php::bar PHP Wiki   -   Listenarchive