s1r10n
27.07.2009, 23:47:02
ich schreibe an einem chat und will abfangen wenn jemand den browserschließt...
php funktionionen durchgesehen hey super Connection_aborted() gefunden klasse...
geht nicht wie gewünscht
ich hab ein script zum testen das tadellos funktioniert
test.php
<?php
echo 'start';flush();
file_put_contents('1.log','a');
for($i=0;$i<15;++$i){
if (Connection_Aborted())exit();
echo $i;flush();
file_put_contents('1.log',$i,FILE_APPEND);
sleep(1);
}
echo 'end';flush();
?>
wenn ich nach n sekunden abbreche hab ich alle zahlen bis n im log stehen
wenn ich jedoch nach n sekunden das fenster schließe oder woanders hin browse
hat niemand jemals den stop button oder esc gedrückt php merkt nicht das der user nichtmehr da ist und das script läuft bis zum ende durch
was auch auf http://de3.php.net/manual/en/features.connection-handling.php
schon in den kommentaren bestätigt wurde das es sich so verhält und warum
jetzt die frage... krieg ich das ohne heartbeat funktion irgendwie hin das auch beim fenster shcließen oder woandershinsurfen mitkriege?
das läuft bei meinem chat am ende in einer endlosen while schleife
das heißt javascript wäre keine option es sei denn ich kann damit das seiten laden abbrechen simulieren wozu ich allerdings nichts finde
edit:
<body onUnload="window.stop">
funktioniert anscheinend
hätte sich damit erledigt
edit: hätte sich erledigt wenns tatsächlich funktionieren würde es triggert anscheinend nicht ausreichend
php funktionionen durchgesehen hey super Connection_aborted() gefunden klasse...
geht nicht wie gewünscht
ich hab ein script zum testen das tadellos funktioniert
test.php
<?php
echo 'start';flush();
file_put_contents('1.log','a');
for($i=0;$i<15;++$i){
if (Connection_Aborted())exit();
echo $i;flush();
file_put_contents('1.log',$i,FILE_APPEND);
sleep(1);
}
echo 'end';flush();
?>
wenn ich nach n sekunden abbreche hab ich alle zahlen bis n im log stehen
wenn ich jedoch nach n sekunden das fenster schließe oder woanders hin browse
hat niemand jemals den stop button oder esc gedrückt php merkt nicht das der user nichtmehr da ist und das script läuft bis zum ende durch
was auch auf http://de3.php.net/manual/en/features.connection-handling.php
schon in den kommentaren bestätigt wurde das es sich so verhält und warum
jetzt die frage... krieg ich das ohne heartbeat funktion irgendwie hin das auch beim fenster shcließen oder woandershinsurfen mitkriege?
das läuft bei meinem chat am ende in einer endlosen while schleife
das heißt javascript wäre keine option es sei denn ich kann damit das seiten laden abbrechen simulieren wozu ich allerdings nichts finde
edit:
<body onUnload="window.stop">
funktioniert anscheinend
hätte sich damit erledigt
edit: hätte sich erledigt wenns tatsächlich funktionieren würde es triggert anscheinend nicht ausreichend