Mailinglisten-Archive |
Hallo allerseits! Ich habe in einem Verzeichnis Vorschaubilder von WWW-Seiten. Die Bilder werden über ein PHP-Skript angefragt. Das soll: 1. Das Vorschaubild mit der header-Funktion sofort ausgeben, falls es existiert (egal wie alt es ist). 2. Falls das Bild nicht existiert oder älter ist als ein Grenzwert, soll das Skript das Vorschaubild neu anfordern und speichern. Dieser Prozess dauert ca. 20 bis 40 Sekunden "Echtzeit". 3. Falls es dann immer noch kein Vorschaubild gibt, wird ein "Nicht gefunden"-Bild ausgegeben, wiederum mit der header-Funktion. Hier in groben Zügen der Code dazu: <?php ignore_user_abort(true); $filename = ...; // 1.: if (file_exists($filename)) { header("Location: http://.../".$filename); ob_flush(); } // 2.: if (!file_exists($filename) || (time()-filemtime($filename) > ...)) { ... /* Bilddaten per WWW-Zugriffe einlesen */ if ($success) { file_put_contents($filename, $data); } clearstatcache(); } // 3.: if (!file_exists($filename)) { header("Location: http://.../nicht_gefunden.png"); } } ?> Damit das Skript im Fall 1 weiterläuft, nachdem es die Bildadresse aus- gegeben hat, habe ich ignore_user_abort(true); verwendet. Die Logik ist auf jeden Fall so, dass nur einmal header("Location: ..."); gesendet wird, entweder gleich am Anfang oder ganz am Ende. Das Problem: Wenn das Bild vorhanden ist, jedoch zu alt, wird immer die WWW-Abfrage für das neue Bild (2.) abgewartet, bevor das Bild im Browser angezeigt wird. Auch der Befehl ob_flush(); hat keine Verbesserung ge- bracht. Ich habe auch mal zwei Leerzeilen an die "Location" gehängt: header("Location: http://.../".$filename."\n\n"); -- ebenfalls ohne Verbesserung. Wie kann ich das vorhandene (alte) Bild sofort anzeigen lassen und das Skript trotzdem weiter laufen lassen, damit es ein neues Bild einliest und speichert? Vielen Dank im Voraus für jede Anregung. Mario Haßler -- NEU: FreePhone - kostenlos mobil telefonieren! Jetzt informieren: http://www.gmx.net/de/go/freephone
php::bar PHP Wiki - Listenarchive