IE: Seite bereits anzeigen, wärend sie noch geladen wird.
Marc
- browser
0 Benne0 Eidgenosse
Moin,
ich schreibe derzeit an einem PHP script, das Verzeichnisse scannt und Dateien in eine Datenbank schreibt. Dementsprechend lange läuft das script. Kann man den IE irgendwie zwingen die Ausgaben des Scriptes schon azuzeigen, wärend die Seite noch geladen wird (das Script also noch läuft)? Dazu sollte ich vielleicht noch sagen, das das ganze in einem IFrame abläuft.
Grüsse
Marc
Kann man den IE irgendwie zwingen die Ausgaben des Scriptes schon azuzeigen, wärend die Seite noch geladen wird (das Script also noch läuft)?
Hi Marc,
hast du schonmal probiert deine PHP-Ausgaben mit flush() vorzeitig auszugeben?
Kann aber sein, dass der IE diese Ausgabe dann erst verzögert oder gar nicht vorm Ende anzeigt. (Kenne mich mim IE-Verhalten nicht mehr so genau aus, weil ich nur noch mim Mozi surfe ;))
Gruß,
Benne
flush() funktioniert nur wenn PHP direkt Zugriff auf den Server hat. Bei mir läuft es aber als Modul über CGI, da kann ich das nicht verwenden... Und ich kenne mich moit dem IE auch net aus... bin überzeugter NSler. So viel Ärger wie mir der IE schon gemacht hat beim bauen von Webseiten, da werde ich den bestimmt nicht verwenden... zum Bleistift auch dieses ständige cachen von dynamischen Seiten... Zum Haare raufen...
Marc
zum Bleistift auch dieses ständige cachen von dynamischen Seiten... Zum Haare raufen...
deswegen gibt es im HTTP-Protokoll die Möglichkeit, dass man die Gültigkeitsdauer bzw. das Caching "empfehlen" kann.
Natürlich hängt das stark vom Client ab, was der daraus macht, aber nach meinen Erfahrungen funktioniert folgende Möglichkeit für den IE mit Standardeinstellungen:
(einfach in dein PHP-Skript einsetzen, bevor irgend eine Ausgabe gemacht wird)
---
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified
header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header ("Pragma: no-cache"); // HTTP/1.0
----
P.S. ich hoffe, ich habe nix Falsches gesagt
Gruß,
Benne
Hallo Marc,
eine etwas aufwendige, aber solange beim Client JavaScirpt läuft sicher funktionierende Möglichkeit ist die folgende:
1. Schreibe einen Server, der Verzeichnisse scannt und in eine Datenbank schreibt. Dieser Server soll hierbei in ein Datenbankfeld periodisch den aktuellen Prozeßstatus gebunden an die Child-PID+timestamp schreiben.
2. Bei Aufruf Deines CGI-Skripts durch einen Browser connectest Du Dich zu diesem Server und läßt ihn arbeiten. An den Browser gibst Du die Meldung zurück, die der Server in das Prozeßstatus-Datenbankfeld geschrieben hat zusammen mit der Child-PID+timestamp. Diese Seite wird jetzt alle x Sekunden - mit der Übermittlung der Child-PID+timestamp - neu geladen und gibt immer wieder den aktuellen Prozeßstatus aus, bis der Server fertig ist.
Gruß
Eidgenosse