RE: [PHP] Closing a connection to browser without exiting the script



-------- Original Message --------
Subject: [PHP] Closing a connection to browser without exiting the
script
From: David Négrier <d.negrier@xxxxxxxxxxxxxxxxxxxx>
Date: Wed, November 01, 2006 2:24 pm
To: php-general@xxxxxxxxxxxxx

Hello there,

I'm having a somewhat unusual question here, and I cannot find any way
to solve it.

I have a PHP page that displays a message, and then, performs a very
long operation. Note that it displays the message first.
I do not intend to give some feedback to the user when the operation is
done.

I've seen I can use ignore_user_abort() to prevent the user from
stopping the ongoing operation, but that solves only part of my problem.
Because as long as the page is not fully loaded, the mouse cursor in the
user's browser is showing a watch.

So ideally, what I would like is to be able to close the connection from
the server-side, but without using the exit() function, so my script
keeps running afterwards.

I know I could use a system() call to launch another process to do the
processing, but I would like to avoid doing that, because there are many
variables in the context that I cannot easily pass in parameter.

I also tried to use the register_shutdown_function() to perform my
operation after the page is displayed but since PHP 4.1.0, the
connection is closed after the function is called....

Would any of you have an idea on how I could close that connection?

Thanks a lot,
David
www.thecodingmachine.com

It's a bit different of an idea, but you could put your reqest to
perform the operation in a text file in some directory. Then you have
a seperate PHP script that checks that directory for any files that
would tell it to operate. Then you tell Cron to run that script every
minute, 10 minutes, whatever works best for you.

With this idea you can write out the file and then tell the person that
you have submitted a request. Then the cron job checks for the request
and performs it. You could use a database instead of a file as well
with the idea of a queue. That would probably work better, because
then if you needed to you can keep track of which user's process was
run, and then update the "user" table. Say the "user" table has a
column "processing" with three possible values. 0 (not processed), 1
(in processing), 2 (finished processing). You could probably expand
upon that idea quite a bit more if you need to.

It's no single magic bullet function call, but that's how I'd probably
do it.

Ray
.



Relevant Pages

  • Re: how to run scripts after a page has already loaded and been sent to a users browser?
    ... > It's because PHP is a server side scripting language, ... > do stuff before you send stuff to user's web browser. ... As we've discussed on this newsgroup before, if a script starts ... that is after the last HTML is sent to a web browser. ...
    (alt.php)
  • PHP Program Randomly Stops
    ... "You can use a combination of PHP with client side code to keep the ... are pages to be processed print a client side script, e.g. JavaScript, ... This will reload until all pages are done - then ... "You are running the script from a browser. ...
    (comp.lang.php)
  • Re: Have you heard about a MySQL connection leak?
    ... This doesn't change with scripting languages like PHP. ... Anyway, the reason a TCP socket connection stays open, is because neither end has closed it. ... Normally a PHP script closes all open connections when it exits. ... When an endpoint wishes to stop its half of the connection, it transmits a FIN packet, which the other end acknowledges with an ACK. ...
    (comp.lang.php)
  • Re: Have you heard about a MySQL connection leak?
    ... PHP ... Anyway, the reason a TCP socket connection stays open, is because neither end has closed it. ... Normally a PHP script closes all open connections when it exits. ... When an endpoint wishes to stop its half of the connection, it transmits a FIN packet, which the other end acknowledges with an ACK. ...
    (comp.lang.php)
  • Re: Which Is The Better Approach To Working With Javascript?
    ... Java SCRIPT runs in the browser exclusively. ... PHP can also run in a browser, ...
    (comp.lang.php)