Beim laden einer Funktion Bild anzeigen

BillaBong

Erfahrenes Mitglied
HI,

ich habe hier das Problem das ich eine Funktion habe die mir Ordner ausliest das kann unter umständen schon mal ein bisschen dauern gibt es eine möglichkeit das ich in der zeit in der die Funktion läd ich ein bild anzeigen kann?
 
Hallo,

naja, würde schon gehen, indem du eine Seite hast, welche dieses Bild anzeigt.
Dort übergibst du noch einen Parameter, z.B. "to".
Also die Datei heißt dann z.B. "load.php", dann hast du eine Datei z.B. "index.html" in der ist ein Link, der zu dieser lange dauernden Funktion führt und noch eine Datei "funktion.php", in der die Funktion ist, die lange dauert.

Dann ist die load.php z.B.:
load.php
PHP:
<?php // Bild anzeigen und weiterleiten
echo "<img src=\"imgLoading.gif\" alt=\"Bitte warten..\">\n";
echo "<meta http-equiv=\"refresh\" content=\"0;URL=funktion.php\">";
// validen HTML-Code kannst du ja immernoch reinmachen, das ist ja nur zur Verständnis

index.php
PHP:
<a href="load.php">Lange brauchende Funktion</a>

funktion.php
PHP:
<?php // hier wird etwas ausgeführt, was lange braucht
sleep(15); // 15 Sekunden pausieren; dies muss durch die lange brauchende Funktion ersetzt werden!
echo "Fertig";

Das ganze kannst du natürlich alles in einer einzigen Datei mit GET-Parametern machen.


Außerdem könntest du das ganze auch mit AJAX machen.

MfG
Fabsch
 
Zuletzt bearbeitet:
jo mit ajax wüsste ich wie es geht war mir jetzt aber zu viel aufwand ... dachte das es da vielleicht was einfacheres gibt. Ich schau mir das ding da von dir mal nachher zu hause an melde mich dann nochmal.
 
Man könnte natürlich auch erst das HTML-Grundgerüst ausgeben mit Bild und ohne abschließenden BODY- und HTML-Tags (mithilfe des OutputBuffers müsste dies eigentlich vor Beendigung des Skriptes funktionieren). Dann diese Funktion, die so lange braucht und am Ende ein JavaScript, welches das am Anfang ausgegebene Bild versteckt (geht natürlich auch mit CSS).
Allerdings musst du, falls während dieser Funktion irgendwelche Ausgaben gemacht werden, den OutputBuffer nochmal aktivieren, da PHP glaube ich alle paar Sekunden die bisherigen Ausgaben an den Client sendet.

Diese Lösung ist zwar einfacher, aber etwas unsauber.

Du kannst dir ja mal beide Lösungen erstmal anschauen und dich dann entscheiden, aber besser ist finde ich die Erste.
 
Zurück