Supportnet / Forum / Skripte(PHP,ASP,Perl...)
PHP bzw. javaScript refresh?
Frage
Hallo Leute,
habe ein Problem. Also:
Ich will mit php einen chat programmieren! Hat eigentlich alles ganz gut geklappt bis auf das Z refresh!
HTML refresh ist zwar ok aber das klicken beim wiederladen der Seite nervt!
JavaScript refresh ist auch ok aber solange die Datenbankabfrage läuft ist die Tabelle mit dem inhalten weiss! Das heisst wenn ich alle 2 sec. ein refresh machen lass ist jede 2.sec ungefär für eine sec. mein Bild weiss!
Seht ihr da eine andere möglichkeit wie z.b erst die Datenbankabfrage ausführen und dann den reload /refresh machen oder gibt es eine andere Möglichkeit?
Viele Grüße
& Danke im Voraus
Marauder
Antwort 1 von semi
Mach' den Refresh in einem getrennten, unsichtbaren Frame (0 Pixel hoch oder breit)
Dein PHP Script sollte in dieses Frame ein Javascript generieren, das die neuen Daten enthält. Sobald das unsichtbare Frame geladen ist (onLoad), ruft es irgendeine Funktion des Hauptframes auf und übergibt die neuen Daten. Im Hauptframe kannst Du damit dann die Anzeige aktualisieren.
So könnte das generierte Frame aussehen
Ansonsten ein Applet als Front-End programmieren.
Gruß,
Michael
Dein PHP Script sollte in dieses Frame ein Javascript generieren, das die neuen Daten enthält. Sobald das unsichtbare Frame geladen ist (onLoad), ruft es irgendeine Funktion des Hauptframes auf und übergibt die neuen Daten. Im Hauptframe kannst Du damit dann die Anzeige aktualisieren.
So könnte das generierte Frame aussehen
...
<head>
<script>
var PAUSE = 5000;
var msgList = new Array(
"Benutzer 1", "Text 1",
"Benutzer 2", "Text 1",
"Benutzer 1", "Text 2"
usw.
);
function update() {
top.frames.hauptframe.update(msgList);
window.setTimeout("location.reload()", PAUSE);
}
</script>
</head>
<body onLoad="update();">
...
Ansonsten ein Applet als Front-End programmieren.
Gruß,
Michael
Antwort 2 von Marauder
Danke werds gleich mal testen an sowas hatte ich nicht gedacht!
Antwort 3 von Mapf
Oder Du lässt von PHP eine Seite ausgeben die nie beendet wird, das heißt zwar dass es so aussieht als ob die Seite ewig lang geladen werden würde, aber das ist auf PHP Basis das schnellste und sauberste.
Mapf
Mapf
Antwort 4 von Marauder
Wie geht das ich meine mir wird die Seite ja erst angezeigt wenn sie komplett geladen ist ??
Antwort 5 von Mapf
Nein, es muss halt in einem einzelnen Frame geschehen in dem Du nur den Text ausgibst, keien Tabellen oder ähnliches.
(user) text<br>(user) text<br>(user) text...
Das wird sofort angezeigt.
Die programmiertechnische Durchführung bleibt Dir überlassen ;)
(user) text<br>(user) text<br>(user) text...
Das wird sofort angezeigt.
Die programmiertechnische Durchführung bleibt Dir überlassen ;)
Antwort 6 von MixMax
das problem ist das PHP nach 30 sekunden ein Timeout macht, das hatte ich auch mal gemacht (funktioniert sogar wenn man das timeout hochsetzt)
alle 5 minuten müstest du dann aber immer noch neu laden, evtl kann man auch ein timelimit was in die stunden geht einbauen.
die sache hat einen haken - der standartbenutzer der auf den chat geht kann das problem haben das sich der chat nicht aufbaut da der Internetexplorer z.B. nur 2 downloads zugleich macht, also wenn du den chat öffnest kanns sein das er die bilder nicht laden kann oder andere teile des fensters nicht geöffnet werden (oder er nix abschicken kann)
set_time_limit(300);
alle 5 minuten müstest du dann aber immer noch neu laden, evtl kann man auch ein timelimit was in die stunden geht einbauen.
die sache hat einen haken - der standartbenutzer der auf den chat geht kann das problem haben das sich der chat nicht aufbaut da der Internetexplorer z.B. nur 2 downloads zugleich macht, also wenn du den chat öffnest kanns sein das er die bilder nicht laden kann oder andere teile des fensters nicht geöffnet werden (oder er nix abschicken kann)