Update Script
skiddo
- php
Hallo Community,
eigentlich ist das hier eine Mischung aus allem :-)
folgendes ist mein Problem und meine mögliche Lösung.
Ich hab eine Seite, mit mehreren Frames, die mit PHP Scripts gefüllt sind, die sich Zeug aus der Datenbank holen. Da es interaktiv ist, ändert sich ständig was an der Datenbank, und um die Änderungen immer schön zu zeigen, werden die scripts sekündlich über
<meta http-equiv="refresh" content="1; URL=chat_window.php#down">
nachgeladen. Das ist jetzt aber bei 7 Frames gleichzeit einfach zu nervig. Manche Frames müssen auch nicht sekündlich nachgeladen werden, weil lange nichts passiert, aber es ist entscheidend, das sobald die Änderung angzeigt werden soll, dies auch passiert, deswegen kann ich auf den 1-Sekunden-Refresh nicht verzichten.
Meine idee ist es jetzt ein Script mitzuladen in einem neuen Frame, was checkt, welcher Frame nachgeladen werden muss, dieses in den <body onLoad=""> Handler schreibt und dann über META-refresh mit 0 Sekunden ständig refresht wird.
Die Frage ist nun, ob es mit den 0 Sekunden klappen könnte oder ich eine andere Methode benutzen muss.
<?php
$1 = check_tbl('tbl1');
$2 = check_tbl('tbl2');
$3 = check_tbl('tbl3');
// ..
?>
<html>
<head>
<meta http-equiv="refresh" content="0; URL=update.php">
</head>
<body onLoad="
<?php
if($1)
{
echo "link('frame1.php', 'target1');";
}
if($2)
{
echo "link('frame1.php', 'target1');";
}
if($3)
{
echo "link('frame1.php', 'target1');";
}
?>
>
</body>
</html>
Vielen Danke, skiddo
Hi!
folgendes ist mein Problem [..]
Ich hab eine Seite, mit mehreren Frames[..]
<meta http-equiv="refresh" content="1; URL=chat_window.php#down">[..]
Das ist jetzt aber bei 7 Frames gleichzeit[..]
Und diese Nummer zu dieser Uhrzeit?
off:PP
Und diese Nummer zu dieser Uhrzeit?
off:PP
Ich habe jetzt vielleicht zu weit ausgeholt. Die eigentliche Frage lautet: Funktioniert
<meta http-equiv="refresh" content="0; URL=chat_window.php#down">
so, das wenn die Seite geladen ist, sie sofort neu geladen wird, und das auch schneller als eine Sekunde gehen kann?
Mahlzeit,
so, das wenn die Seite geladen ist, sie sofort neu geladen wird, und das auch schneller als eine Sekunde gehen kann?
Und wie sollte der Browser die Seite aufbauen, wenn sie sofort wieder überschrieben wird?
Du hast einen Konzeptfehler, da HTTP kein passendes Protokoll für deinen Zweck ist.
Wenn du es aber so machen willst, nimm dir als Beispiel einen Streaming-Chat, der liefert neue Daten, sobald sie jemand anderer eingibt. Grob gesagt lädt die Webseite "ewig" und bekommt halt nur sichtbaren Text, wenn es was anzuzeigen gibt.
der liefert neue Daten, sobald sie jemand anderer eingibt. Grob gesagt lädt die Webseite "ewig" und bekommt halt nur sichtbaren Text, wenn es was anzuzeigen gibt.
Genau das ist es ja was ich erreichen will. Und das ich mit HTTP sowas nicht hinkriege ist mir auch klar, genau deswegen will ich ja testen, ob mal mit dem 0-Sekunden-Trick dieses so ein wenig austricksen kann.
echo $begrüßung;
Ich hab eine Seite, mit mehreren Frames, die mit PHP Scripts gefüllt sind, die sich Zeug aus der Datenbank holen. Da es interaktiv ist, ändert sich ständig was an der Datenbank, und um die Änderungen immer schön zu zeigen, werden die scripts sekündlich [...] nachgeladen. Das ist jetzt aber bei 7 Frames gleichzeit einfach zu nervig. Manche Frames müssen auch nicht sekündlich nachgeladen werden, weil lange nichts passiert, aber es ist entscheidend, das sobald die Änderung angzeigt werden soll, dies auch passiert, deswegen kann ich auf den 1-Sekunden-Refresh nicht verzichten.
Vielleicht ist es günstiger, statt der vielen Frames eine einzelne Seite zu erstellen, die ihre Teilbereichsinhalte per AJAX nachlädt. Nach einem einsekündigem setTimeout() wird ein AJAX-Request angestoßen, der vom Server alle veränderten Daten holt und sie gegebenenfalls in die Seite einbaut oder auch nicht. Anschließend[*] wird der setTimeout() wieder gestartet und so weiter und so fort.
[*] Wenn ein AJAX-Request (mal etwas länger) läuft kommt diesem auf diese Weise kein zweiter in die Quere.
echo "$verabschiedung $name";
Vielleicht ist es günstiger, statt der vielen Frames eine einzelne Seite zu erstellen, die ihre Teilbereichsinhalte per AJAX nachlädt.
Leider habe ich von Ajax keine Ahnung, und das Script ist jetzt schon sehr lange in Entwicklung und müsste so nochmal komplett umgeschrieben werden.
Falls du mir gute Quellen dafür geben kannst, wäre das sehr nett!
skiddo
Würde es nicht eigentlich auch gehen, das ich erstmal dieses Update-Script mit AJAX mache? So das über Ajax gecheckt wird, ob Daten neu da sind, und wenn ja, die einzelnen Frames reloaded.
Und noch eine Frage: "Behindern" sich 2 Ajax Requests?
Gruß, skiddo