diff options
author | Rasmus Lerdorf <rasmus@php.net> | 2004-12-04 07:16:44 +0000 |
---|---|---|
committer | Rasmus Lerdorf <rasmus@php.net> | 2004-12-04 07:16:44 +0000 |
commit | 224d2479b39ac02a76c611423b784e9487db65c3 (patch) | |
tree | bdd8edc7ccc8da00fb27c5941216884af49ee5fc /sapi/apache/php_apache.c | |
parent | 9ff0d0818ec01827a2cee3dfd6102a4ad2c6a2ca (diff) | |
download | php-git-224d2479b39ac02a76c611423b784e9487db65c3.tar.gz |
Add apache_reset_timeout() function for Apache1. This is needed because
Apache1 only resets the write timer, which defaults to 300 seconds, on
a successful write. That is, if the client has gone away and Apache
attempts a write which fails it will set the conn->aborted flag but not
reset the timeout. Assuming the PHP script is running in ignore_user_abort
mode we ignore the aborted flag, but we'll still get blown out of the water
300 seconds after the failed write unless we periodically reset the timer.
With set_time_limit(0), ignore_user_abort(true) and periodic
apache_reset_timeout() calls we can theoretically run forever which is
why I disabled this call in safe mode.
Diffstat (limited to 'sapi/apache/php_apache.c')
-rw-r--r-- | sapi/apache/php_apache.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/sapi/apache/php_apache.c b/sapi/apache/php_apache.c index a52e95d19b..6f98f3ecc9 100644 --- a/sapi/apache/php_apache.c +++ b/sapi/apache/php_apache.c @@ -47,6 +47,7 @@ PHP_FUNCTION(apache_child_terminate); PHP_FUNCTION(apache_setenv); PHP_FUNCTION(apache_get_version); PHP_FUNCTION(apache_get_modules); +PHP_FUNCTION(apache_reset_timeout); PHP_MINFO_FUNCTION(apache); @@ -536,6 +537,20 @@ PHP_FUNCTION(apache_get_modules) } /* }}} */ +/* {{{ proto array apache_reset_timeout(void) + Reset the Apache write timer */ +PHP_FUNCTION(apache_reset_timeout) +{ + if (PG(safe_mode)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot reset the Apache timeout in safe mode"); + RETURN_FALSE; + } + + ap_reset_timeout((request_rec *)SG(server_context)); + RETURN_TRUE; +} +/* }}} */ + /* * Local variables: * tab-width: 4 |