unsichtbarer Refresh

A

andiR

Guest
Hallo,

ich hoffe hier kann mir jemand weiterhelfen. Ich möchte auf meiner Seite alle 15 Sekunden Datenbankabfragen machen und dann evtl. ein Popup oder sonstiges öffnen.

Bisher habe ich das ganze über ein Iframe gemacht, mit einem einfachen Reload. Gibt es auch noch eine andere Möglichkeit?

Grüße
Andi
 
Ein etwas unschöner Ansatz wäre noch, wenn du mit der PHP Funktion sleep() arbeitest...
 
QUOTE (sd12 @ Sa 9.06.2007, 13:56) Ein etwas unschöner Ansatz wäre noch, wenn du mit der PHP Funktion sleep() arbeitest...

Jepp, ein sehr unschöner Ansatz, besonders da man dabei leicht an die max_execution_time (Standardeinstellung: 30 Sekunden) von PHP überschreiten kann, und dann wird das komplett Scirpt angehalten. Gegebenfalls wird sogar noch ein Fehler ausgeben.
 
QUOTE (flirtratgeber @ Sa 9.06.2007, 20:28) welchen sinn macht eigentlich das sleep? ich mein ich kenn die funktion aber hat wer ne anwendung dafuer ?

Bei einem Script welches nicht zu oft aufgerufen werde soll...

...z. B. bei einem Voting, dann kannst Du das Voting ein wenig gegen fakeing schützen...

...was besseres ist mir nicht eingefallen...

Ich hab es bei einem Script im einsatz, wo ich eine Handynummer prüfen will.

Bis ein SMS zugestellt ist und ich die Meldung bekomm, dass es zugestellt ist, dauert es ca. 10 Sekunden.

Und da hab ich ein sleep drin....
 
QUOTE (flirtratgeber @ Sa 9.06.2007, 19:28)welchen sinn macht eigentlich das sleep? ich mein ich kenn die funktion aber hat wer ne anwendung dafuer ?

Manchmal soll bsp. alle fünf Minuten etwas überprüft werden (ob bestimmte neue Mails zu versenden sind). Dann kann man einen Hintergrundthread starten, der überprüft das zunächst - und schläft dann fünf Minuten, bis zur nächsten Runde.


CODE While True
mach etwas

Thread.Sleep(5 * 60 * 1000)
End While



QUOTE (andiR @ Sa 9.06.2007, 12:16)Ich möchte auf meiner Seite alle 15 Sekunden Datenbankabfragen machen und dann evtl. ein Popup oder sonstiges öffnen.

Bisher habe ich das ganze über ein Iframe gemacht, mit einem einfachen Reload. Gibt es auch noch eine andere Möglichkeit?


Spricht doch nichts dagegen, das so zu machen. Das erreicht alle, auch die mit deaktiviertem Javascript. Damit ginge es theoretisch auch, da gibt es irgendsoeine Timerfunktion. Aber ob man jetzt im iFrame einen JavaScript-Timerfunktion oder ein Refresh hat, macht eigentlich keinen so großen Unterschied.
 
Guten Abend,

danke für eure zahlreichen Antworten. Ich bin bereits fündig geworden und zwar werde ich es über AJAX lösen.

QUOTE Spricht doch nichts dagegen, das so zu machen. Das erreicht alle, auch die mit deaktiviertem Javascript. Damit ginge es theoretisch auch, da gibt es irgendsoeine Timerfunktion. Aber ob man jetzt im iFrame einen JavaScript-Timerfunktion oder ein Refresh hat, macht eigentlich keinen so großen Unterschied.



Ich bin kein Ajax und Javascript Profi. Aber ist es möglich aus dem Iframe z.B. ein Ajax Fenster in der Hauptseite zu laden?

Gruß

andi
 
Guten Morgen,
bin etwas weiter gekommen. Verwende jetzt folgende Scripts:

- Sajax --> http://www.modernmethod.com/sajax/
- prototype-window --> http://prototype-window.xilinus.com/

Mein Beispielquelltext sieht jetzt so aus:



CODE <?
require("Sajax.php");
sajax_init();
sajax_export("update");
sajax_handle_client_request();

function update() {
$newmsgs = time()."<script>win2();</script>";
$ret = "document.getElementById('titelinfo').innerHTML='{$newmsgs}';";
return $ret;
}
?>
<html>
<head>
<script type="text/javascript" src="js/prototype.js"> </script>
<script type="text/javascript" src="js/effects.js"> </script>
<script type="text/javascript" src="js/window.js"> </script>
<script type="text/javascript" src="js/window_effects.js"> </script>
<script type="text/javascript" src="js/debug.js"> </script>
<link href="themes/default.css" rel="stylesheet" type="text/css"/>
<link href="themes/alphacube.css" rel="stylesheet" type="text/css"/>

<script language="javascript">
<? sajax_show_javascript(); ?>
function refreshTimer(t) {
setTimeout("update()",t*1000);
}
function update() {
x_update(update_cb);
}
function update_cb(result) {
eval(result);
refreshTimer(30);
}
</script>
<script type="text/javascript">


function win2()
{
var win = new Window({id: "win2", className: "alphacube", title: "Sample", width:200, height:150});
win.getContent().innerHTML = "text";

win.setDestroyOnClose();
win.showCenter();
win.setConstraint(true, {left:0, right:0, top: 30, bottom:10})
win.toFront();
}
</script>
</head>
<body onLoad="refreshTimer(10);">
<div id="titelinfo"><script>win2();</script></div>
</body>
</html>


Es wird praktisch DIV "titelinfo" alle 30 Sekunden aktualisiert. Jedoch hätte ich noch gerne ein Fenster dazu geöffnet.
Dieses Fenster kann ich über


CODE <script>win2();</script>


öffnen. Ich habe es zu beginn einfach mal eingebaut, damit man sieht dass es funktioniert. Jedoch wird das Fenster nach 30 nicht erneut angezeigt. Aufruf muss anscheinend aus dem Body Bereich erfolgen, aber das wär ja hier der Fall.

Kann mir jemand weiterhelfen?

Vielen Vielen Dank.

Gruß

Andi
 
Zurück
Oben