Marc: IE: Seite bereits anzeigen, wärend sie noch geladen wird.

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

  1. 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

    1. 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

      1. 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

  2. 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