Re: script not terminating on user abort
| From: | Dennis Jacobfeuerborn | Date: | Mon, 25 Aug 2003 15:58:14 +0000 |
| Subject: | Re: script not terminating on user abort | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-160668@lists.php.net to get a copy of this message | ||
On Mon, 2003-08-25 at 01:15, Curt Zirzow wrote:
> * Thus wrote Dennis Jacobfeuerborn (d.jacobfeuerborn@conversis.de):
> > Hi!
> > The connection_* function don't seem to work for me and I can no longer
> > determine when the user has aborted the script. When I close the browser
> > window the script just keeps running. (see bug #23163)
> >
> > The body of the script essentially looks like this:
> >
> > while( !$done ) {
> > $con->sendMessage("x"); # Send msg to Jabber server
> > sleep(1);
> > }
> >
> > I made an interesting and somewhat weird observation though:
> > If I use the print or echo command in the while-loop once (!) then the
> > script will terminate after the loop has run *exactly* three times after
> > the abort.
> >
> > If I put more than one print/echo in the loop (2->inf) then the script
> > will terminate after *exactly* 2 (!) iterations of the loop after the
> > script has aborted.
>
> how is it your knowing the number of times it is going through the
> loop when the conneciton is aborted?
By counting the number of "x" messages I receive on the other end of the
Jabber connection.
> If you know that the
> connection is aborted why isn't it breaking out of the loop? Do you
> have some code that can show this?
>
this code will just continue to send "x" messages after an abort:
while( !$done ) {
$con->sendMessage("x"); # Send msg to Jabber server
sleep(1);
}
this code will send exactly 3 "x" messages after an abort:
while( !$done ) {
$con->sendMessage("x"); # Send msg to Jabber server
sleep(1);
print "foobar";
}
this code will send exactly 2 "x" messages after an abort:
while( !$done ) {
$con->sendMessage("x"); # Send msg to Jabber server
sleep(1);
print "foobar";
print "foobar"; # any additional number of print/echo commands will
do
}
I hope this helps.
regards,
Dennis