Hi
It's a common problem with long time process.
But if the user close its browser and application runs, this one has no
interaction with network. We have the following scenario:
. connection : handshake with SYN, SYN-ACK - ACK packets between browser
and apache
. HTTP request received from the browser which wait its response
. process execution : the PHP process runs and browser already waits.
. the browser is closed. Nothing append in the server side because no
network interaction exists at this moment until application stops
(failed or ok). When application terminates, the response is send and
server will receive a TCP RST packet (reset) cause connection no longer
exists.
So you should use a interaction during the process to inform the user he
must wait (icon, message) and refresh it during process. If a refresh
failed (browser no longer connected) so terminates application.
You can use sample at http://www.valhalla.fr/2007/08/01/php-wait-screen/
Bye
Le 06/02/2014 12:01, Todd MacKay a écrit :
Is there socket level time-out configuration in the Apache HTTP
server? If yes, which module(s) should be included and how should
they be configured?
Background: Using the Apache 2.2.24 HTTP server, we are running a PHP
process that performs long-running operations to send output results
to client's browser. Sometimes the user becomes impatient and closes
the browser before the PHP process has finished. They then re-open
the browser which starts a new PHP process while the original process
is still running.
Our goal is that as soon as the connection to the browser is closed,
the PHP process should be killed/terminated instead of continuing to
process an occupying valuable resources.
We have tried using the ob_flush() function in PHP to trigger Apache
to terminate the process but would prefer to do this with Apache.
It appears this functionality exists in the Apache Tomcat software
(See:
http://tomcat.apache.org/connectors-doc/generic_howto/timeours.html)
so we'd like to know if similar functionality can be configured in the
Apache HTTP server.
Thanks,