"Ladebildschirm" mit Javascript oder php?

splat

Erfahrenes Mitglied
Hallo,

ich habe hier ein php skript, welches in etwa 30 Sekunden zum durchlaufen benötigt. Dementsprechend sehe ich nur einen weißen Bildschirm, und die Ausgabe kommt erst nach ca. 30 Sekunden zum Vorschein.

Wie könnte ich denn eine Art "Ladebildschirm" anzeigen, der während dessen angezeigt wird? Ein animiertes Gif würde mir da schon reichen..
Hat dafür jemand einen Denkanstoß für mich, wie man so etwas lösen könnte?

Oder geht so etwas nur mit Hilfe von Javascript?
Damit habe ich mal eine Statusanzeige für einen Fileupload eingebaut, jedoch wüsste ich nicht wie ich das in diesem Fall irgendwie selbst bauen könnte :confused:

Viele Grüße,
Marc
 
Im Prinzip hast du die Lösung doch schon selbst genannt. Nimm ein animiertes gif, welches du auf 30 Sekunden einstellst...
Mit PHP hat das eigentlich nichts zu tun. Du musst im Header (HTML) festlegen, wann und wohin eine weiterleitung erfolgen soll.
 
Hi, vielen Dank für die schnelle Antwort :)

mmm.. wenn das nur so leicht wäre ;-)
Also das ganze sieht bei mir momentan wie folgt aus...
Man klickt auf einen Button/Link und kommt zur update.php. Diese sieht so aus:

update.php
PHP:
<?php
include("config.php");
include("header.php");

echo "<img src='images/wait.gif'>";

shell_exec("/home/test/test.sh");        // dieser Befehl dauert 30 Sek
?>

Wenn die Datei "Stück für Stück" ausgeführt werden würde, dann wäre das ja alles okay :-)
Aber ich bekomme eben alles erst nach 30 Sek angezeigt, dann wenn schon alles erledigt ist. die header.php, das wait.gif...

Wie hast du dir das gedacht? Vielleicht stehe ich nur gerade etwas auf dem Schlauch :suspekt:

Gruß,
Marc
 
Nun ja, ist eigentlich völlig korrekt, dass es nach 30 Sekunden auftaucht. PHP wird auf dem Server interpretiert/übersetzt. Also laufen dort auch die 30 Sekunden ab. Das Ergebnis der PHP-Übersetzung wird dann an den Broswer geschickt.
Ich dachte eher, dass du eine ganz simple HTML-Seite erstellst und dort folgenden Code einpflegst:
Code:
<meta http-equiv="refresh" content="30; url=http://www.zieladdy.de/">
Das bewirkt, dass die zieladdy.de nach 30 Sekunden aufgerufen wird. dazu kannst du dann beliebige Bilder/animierte gifs auf der Seite platzieren.
Ob dein Skript dort platziert werden kann, weiß ich jedoch nicht genau. Habe das noch nie versucht....

Aber vielleicht willst du es so gar nicht, dann müsstet du dein genaues Vorhaben mal beschreiben ;)

Noch eine Frage: der Skriptaufruf wird erst abgearbeitet und durchläuft dann erst den Rest des Programms?

Gruß,
derPfaff
 
Zuletzt bearbeitet:
Sonst mach das so:

Du nimmst eine Datei, in der das animierte GIF angezeigt wird, und die nach 30 Sekunden irgendwo anders hinleitet.
In diese Datei bindest du einen iFrame ein, der eine PHP Datei anzeigt, die dieses Shell Script ausführt. Den iFrame kannst du 1x1 Pixel groß und weiß machen, dann sieht den keiner, und nach 30 Sekunden auf die Ergebnisseite leiten. Wenn du mehrere Ergebnisse hast (also von mehreren Usern) dann trenne die mit Sessions von einander.

Ich hoffe, du verstehst was ich meine, sonst frag einfach nochmal nach. iFrames findest du notfalls bei google
 
Das ist ja genau das, was ich nicht brauche :)

Man ruft diese update.php aus, und dann sollte man sofort eine Art Ladebildschirm sehen, während diese ausgeführt wird. Das PHP erst die Ausgabe nach durchlaufen des Scripts an den Client sendet, das weiß ich ja. Daher suche ich nach irgendeiner anderen Lösung.

Hmm...vielleicht funktioniert es ja auch mit html frames.... in einem wird das Gif angezeigt, und im anderen läuft die update.php :)

Natürlich nicht sehr elegant... :-/

Bei diesem File Upload mit php, hat javascript einfach alle 3 Sekunden ein php skript gestartet welches nach der bereits hochgeladenen Dateigröße geschaut hat. So konnte man dann alles schön berechnen und das <div> aktualisieren.. Allerdings mit Javascript, und dazu kenne ich mich nicht gut genug aus. Würde bestimmt irgendwie gehen :-/
 
Hallo multimolti,

das hört sich nach einer Lösung an.. werde mich dann mal über iFrames schlau machen :)

Besten Dank für eure Hilfe
 
Ich würde einfach die Lösung mit den iFrames machen, das ist nicht unelegant, aber praktisch und einfach.
Viele Counter für Website-Besucher laufen über 1x1 Pixel iFrames, dann wird das PHP Script ausgeführt, kann Userdaten sammeln, ohne das man jedoch davon etwas sieht.
 
Ah, ich habe das Wichtigste überlesen. Klar, dann kannst du mit meinen Lösungen nichts anfangen, sorry!
Was eine Möglichkeit wäre, dass du AJAX verwendest. Dort kannst du aus einem HTML und Javascript-Dokument eine PHP-Datei aufrufen. Sobald die PHP-Datei abgearbeitet ist, rufst du mit Javascript die neue Seite auf...
Code:
xmlHttp.onreadystatechange = weiterleitungsfunktion;
 
Zurück