summaryrefslogtreecommitdiff
path: root/sapi/apache/php_apache.c
diff options
context:
space:
mode:
authorRasmus Lerdorf <rasmus@php.net>2004-12-04 07:16:44 +0000
committerRasmus Lerdorf <rasmus@php.net>2004-12-04 07:16:44 +0000
commit224d2479b39ac02a76c611423b784e9487db65c3 (patch)
treebdd8edc7ccc8da00fb27c5941216884af49ee5fc /sapi/apache/php_apache.c
parent9ff0d0818ec01827a2cee3dfd6102a4ad2c6a2ca (diff)
downloadphp-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.c15
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