Seite Laden --> Fortschrittsbalken
Maik
- html
hallo,
ich suche schon seit langer zeit, ein script(nicht zu komplex),was waehrend der apache-php server, neue-daten und alte-daten mit der datenbank abgleicht.
da in der zeit die seite leer ist , wollte ich so eine art fortschrittsbalken anzeigen lassen,wie weit der vorgang abgeschlossen ist. danke allen fuer die hilfe
Moin!
hallo,
ich suche schon seit langer zeit, ein script(nicht zu komplex),was waehrend der apache-php server, neue-daten und alte-daten mit der datenbank abgleicht.
Das wird nichts. Der Browser müsste sofort erfahren, wie lange der Vorgang dauern wird. Ich empfehle eines der üblichen animierten GIF's oder Flash für den gefakten Fortschrittsbalken.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
wenn ich aber weiss z.b. 288 daten werden geupdatet,
meine rechnung:
100% / 288 = 0.35 % fuer einen daten abgleich
nach jedem 10 waeren es 3,5 % das waere doch gut, jetzt nach jedem 10 den balken zu erhöhen gibt es da nicht sowas in js oder php (flush??)
Hallo,
nach jedem 10 waeren es 3,5 % das waere doch gut, jetzt nach jedem 10 den balken zu erhöhen gibt es da nicht sowas in js oder php (flush??)
Während auf deinem Server ein Script arbeitet läuft die Übertragung der Webseite zum Benutzer ja noch. Du kannst natürlich versuchen in die zu übertragende Seite einen solchen Balken einzubauen und alle 10 Einträge ein <script> ... </script> in den Body schreiben (output buffering ausmachen) welches via JS/DOM deinen Balken auf die gewünschte Größe bringt, aber ob der Browser diese Scripts schon so ausführt wie du es gerne hättest, obwohl die Seite noch am Laden ist, das musst du selber testen.
Viele Grüße,
Stefan
nochmal zur erklärung,
sorry wenn ich mich im html forum eingeschrieben habe,
also im browser wird durch druecken ein php script aufgerufen, das mehrere geraete per snmp status maessig abfragt z.b. port 1 = link up, ....
diese informationen werden an die db uebertragen und verglichen, wenn aenderungen fuer einzelne ports vorliegen werden sie geupdatet.
und durch das snmp abfragen der einzelnen ports dauert es bei 2 geraeten schon mal 40 sek. bis alles fertig ist. darum der vorschlag einen fortschrittsbalken einzubinden. ich hoffe es ist jetzt verstaendlich. ;-)
bitte helft mir.
Moin!
also im browser wird durch druecken ein php script aufgerufen, das mehrere geraete per snmp status maessig abfragt z.b. port 1 = link up, ....
diese informationen werden an die db uebertragen und verglichen, wenn aenderungen fuer einzelne ports vorliegen werden sie geupdatet.
und durch das snmp abfragen der einzelnen ports dauert es bei 2 geraeten schon mal 40 sek. bis alles fertig ist. darum der vorschlag einen fortschrittsbalken einzubinden. ich hoffe es ist jetzt verstaendlich. ;-)
Du willst per browseraufgerufenem Skript etwas tun, was du sinnvollerweise damit nicht erledigen solltest.
Deine Aufgabe sollte sich eigentlich in zwei Teilaufgaben splitten. Die wichtigste und zeitaufwendigste, nämlich die SNMP-Abfrage, sollte hierbei unabhängig vom Browser regelmäßig per Cronjob erledigt werden.
Du kannst jedenfalls unmöglich eine von der Realität (dem Fortschritt auf dem Server) abhängige und echte Fortschrittsanzeige realisieren. Es gibt viel zuviele Einflüsse, die dir den Effekt verhageln können. Irgendein Cache wird deine Seite immer irgendwie abfangen und erst weitersenden, wenn die Seite fertig ist - und damit alle Aufgaben erledigt sind. Resultat: Warten, bis "100%" erscheint.
Typischerweise wird zur Beruhigung der Benutzer ein Fake-Balken eingeblendet. Dazu gibts einen netten Trick: Auf der Seite, von der aus das Skript aufgerufen wird, werden zwei Layer angelegt (positioniert werden muß nur einer von beiden). Der eine enthält den normalen Inhalt und wird zu Beginn angezeigt (visibility:visible). Der andere wird entsprechend so positioniert, dass er an geeigneter Position im Fenster angezeigt wird, wenn gewartet werden muß, und versteckt (visibility:hidden). onclick wird dann der Content ausgeblendet und das "Bitte warten" eingeblendet, während im Hintergrund der Browser auf die neue Seite wartet.
- Sven Rautenberg
das mit dem cronjob ist richtig,
aber so richtig verstehe ich das mit den fake-balken nicht, kannst
du mir nicht ein beispiel proggen??
also die abfrage der geraete laeuft in einer
for-schleife ab. cu danke
Moin!
das mit dem cronjob ist richtig,
aber so richtig verstehe ich das mit den fake-balken nicht, kannst
du mir nicht ein beispiel proggen??
Nein, kann ich nicht. Wenn ich für dich tätig werden soll, kostet dich das 400 Euro am Tag. Von irgendwas muß ich ja schließlich auch leben.
Du kriegst hier kostenlos jede Menge Hinweise, wie "man es macht". Für den Rest bist du selbst zuständig.
also die abfrage der geraete laeuft in einer
for-schleife ab. cu danke
Wie ich versuchte darzulegen: Baue auf der Seite _davor_ einen kleinen Mechanismus ein, der beim Klicken auf den Link/den Button, der die Ergebnisseite aufruft, den vorhandenen Content ausblendet und ein (bereits auf Vorrat geladenes) animiertes GIF einblendet - und meinetwegen auch noch den Text "bitte warten...", oder eben nur diesen Text.
- Sven Rautenberg
Moin!
Du hast nicht geschrieben, dass Dein Browser zwischendurch Daten sendet ...
Natürlich kannst Du eine Tabelle mit zwei Zellen (Eine schön bunt...) machen, und eine davon mittel JS breiter machen. Du sendest einfach zwischen den Daten kleine JS- Einzeiler. In die zweite Zelle kannst Du sogar einem Wert eintragen und diesen manipulieren:
<script type="text/javascript"><!--
document.getElementbyId('Zelle1').style.width=zahl;
/* manipuliert die Breite. */
document.getElementbyId('Zelle2').innerHTML="str";
/* ... den Wert */
//--><script>
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
hallo,
ich suche schon seit langer zeit, ein script(nicht zu komplex),was waehrend der apache-php server, neue-daten und alte-daten mit der datenbank abgleicht.
da in der zeit die seite leer ist , wollte ich so eine art fortschrittsbalken anzeigen lassen,wie weit der vorgang abgeschlossen ist. danke allen fuer die hilfe
Du verwechselst was.
Wenn dein skript wirklich nicht komplex ist, sollte es nur einige zehntel sekunden brauchen (sofern du einen halbwegs vernünftigen Hoster hast), das was du als Verzögerung wahrnimmst, ist der ganz normale Internetverkehr. Und das sollte sogar der unbedarfte Benutzer mittlerweile als normal begriffen haben, dass man hin und wieder mal auf eine Seite wartet.
Struppi.
nochmal zur erklärung,
sorry wenn ich mich im html forum eingeschrieben habe,
also im browser wird durch druecken ein php script aufgerufen, das mehrere geraete per snmp status maessig abfragt z.b. port 1 = link up, ....
diese informationen werden an die db uebertragen und verglichen, wenn aenderungen fuer einzelne ports vorliegen werden sie geupdatet.
und durch das snmp abfragen der einzelnen ports dauert es bei 2 geraeten schon mal 40 sek. bis alles fertig ist. darum der vorschlag einen fortschrittsbalken einzubinden. ich hoffe es ist jetzt verstaendlich. ;-)
bitte helft mir.
also im browser wird durch druecken ein php script aufgerufen, das mehrere geraete per snmp status maessig abfragt z.b. port 1 = link up, ....
diese informationen werden an die db uebertragen und verglichen, wenn aenderungen fuer einzelne ports vorliegen werden sie geupdatet.
und durch das snmp abfragen der einzelnen ports dauert es bei 2 geraeten schon mal 40 sek. bis alles fertig ist. darum der vorschlag einen fortschrittsbalken einzubinden. ich hoffe es ist jetzt verstaendlich. ;-)
Du meinst du hast ein CGI skript, dass 40 sekunden läuft? Beachtlich.
es gibt nur sowas wie server push (oder wie das heißt), damit hab ich aber noch nie was gemacht.
Struppi.