Datenbankeintrag bei verlassen des Dokuments löschen
Michael
- datenbank
0 Gerhard0 wahsaga
0 Eidgenosse0 Michael0 Eidgenosse0 Michael0 Eidgenosse0 wahsaga
0 Tom0 Tom
Hallo!
Mein Problem ist folgendes:
Ich möchte beim Verlassen einer Seite Datensätze aus einer Datenbank löschen.
Es sollen dazu keine weiteren Aktionen notwendig sein. Soetwas in der Art wäre "onUnload" wäre optimal.
Allerdings habe ich keinen Ansatz wie ich hier beginnen könnte. Bin für jeden Hinweis dankbar...
ich bin mir nicht sicher ob das funktioniert:
function BeimVerlassen() {
<?php
dein skriptcode
?>
return false;
}
...
<body onUnload="BeimVerlassen()">
mfg gerhard
hi,
ich bin mir nicht sicher ob das funktioniert:
nein, ganz sicher nicht.
function BeimVerlassen() {
<?php
dein skriptcode
?>
return false;
}
...
<body onUnload="BeimVerlassen()">
zu dem zeitpunkt, wo der client die seite erhält - und erst dann kann javascript ausgeführt werden - ist der PHP-code schon längst abgearbeitet worden - und zwar in _jedem_ fall.
befasse dich mal mehr mit dem unterschied zwischen server- und clientseitigen abläufen.
gruß,
wahsaga
Dies zum Beispiel zu realisieren, indem Du über das periodische Laden eines Images dem Server signalisiert, daß Du noch da bist. Falls der Server eine solche Rückmeldung nicht mehr erhält, geht er davon aus, daß der User die Seite verlassen hat. Voraussetzung ist hierfür jedoch, daß der User JavaScript aktiviert hat.
Danke für die Antwort. Wie läßt sich einen solche Periode realisieren?
Geht das über eine Schleife? Wenn ja, wird das System dadurch nicht zu sehr belastet?
Danke für die Antwort. Wie läßt sich einen solche Periode realisieren?
mit "setInterval"
Zum Thema Bilder dynamisch laden lies in Selfhtml den Teil "Dynamische graphische Buttons"
Geht das über eine Schleife? Wenn ja, wird das System dadurch nicht zu sehr belastet?
Kommt darauf an, ob Du als Interval 1 ms oder 60 min wählst. Ich würde vorschlagen 1 min.
Das hilft mir schonmal weiter. Eine Frage habe ich nur noch:
Wie "merkt" der Server, dass das Image nicht mehr aktualisiert wird?
Wie merkst denn Du z. B., daß das Mädel an der Tisch gegenüber aufgehört hat, mit Dir anzubändeln? Es sollte nicht allzu schwer sein, den Sachverhalt in einem Programm abzubilden.
hi,
Wie merkst denn Du z. B., daß das Mädel an der Tisch gegenüber aufgehört hat, mit Dir anzubändeln?
du (als server) schläfst aber immer sofort ein, wenn das mädel dich nicht mehr anlächelt (der client keinen request mehr macht).
Es sollte nicht allzu schwer sein, den Sachverhalt in einem Programm abzubilden.
zunächst mal muss das "aufwecken" abgebildet werden.
"cronjob" wäre der name eines denkbaren weckers.
gruß,
wahsaga
Hello,
Ich möchte beim Verlassen einer Seite Datensätze aus einer Datenbank löschen.
Es sollen dazu keine weiteren Aktionen notwendig sein. Soetwas in der Art wäre "onUnload" wäre optimal.
Mit HTTP geht das eigentlich nicht. Uneigentlich aber schon. Auch PHP stellt da eine Möglichkeit zur Verfügung. Das ist aber nicht sehr schön eine tiefere Protokollschicht zu "vergewaltigen", weil das ganze Pronzip der Internet-Client-Server-Technik damit gestört wird. In verbindungsorientierten lokalen Netzen ist das nicht so problematisch. Da hat man auch genug Bandbreite um von hunderten von Clients die "still alive" Rückmeldung einzusammeln.
Schau Dir mal da Testscript an.
Es macht nich nicht das, was es soll.
Insbesondere kann ich von einem Client (IE5.5) auch nur drei laufende Instanzen erzeugen. Ich weiß allerdings nicht, ob es jetzt am Client, oder am Server liegt.
<?php #### control_center_02.php ####
ini_set("track_errors","1");
$php_errormsg;
set_time_limit(0);
$pid = getmypid();
echo "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.1 Transitional//EN">\n";
echo "<HTML>\n";
echo "<HEAD>\n";
echo " <TITLE>Dauerlauf</TITLE>\n";
echo "</HEAD>\n";
echo "<BODY>\n";
$ok = ignore_user_abort(true); ## Script läuft bei abort weiter
echo "User-Abort vor der Einstellung ".($ok?'true':'false')."<br />";
echo "User-Abort nach der Einstellung ".(ignore_user_abort()?'true':'false')."<br />";
flush();
while (!connection_aborted())
{
echo "$pid ".time()." lebt noch<br />";
flush();
sleep(2);
}
mail('tom@example.com',"prozess: $pid","Prozess $pid stoppt gleich ".date('H:i:s'));
sleep(30);
mail('tom@example.com',"prozess: $pid","Prozess $pid stoppt jetzt ".date('H:i:s'));
echo "</body>\n";
echo "</html>";
?>
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hello,
Schau Dir mal da Testscript an.
Es macht noch nicht das, was es soll.
Insbesondere kann ich von einem Client (IE5.5) auch nur drei laufende Instanzen erzeugen. Ich weiß allerdings nicht, ob es jetzt am Client, oder am Server liegt.<?php #### control_center_02.php ####
ini_set("track_errors","1");
$php_errormsg ='';
Das mit den Instanzen scheint wohl irgendwie am Client zu liegen. Der eine kann drei, der andere zwei und der dritte auch drei. Und alle zusammen können sie diese Anzahl auch...
Daß das Script noch nicht macht, was es soll, liegt an meinem Update auf PHP 4.3.8. Die Mailfunktion geht nicht mehr. Da kann ich also lange warten auf eine Aktion.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom