]> granicus.if.org Git - php/commitdiff
Per discussion on #php.bugs (+1 from at least Derick and Jani), revert double_buffering.
authorSebastian Bergmann <sebastian@php.net>
Sun, 1 Sep 2002 11:33:19 +0000 (11:33 +0000)
committerSebastian Bergmann <sebastian@php.net>
Sun, 1 Sep 2002 11:33:19 +0000 (11:33 +0000)
NEWS
main/main.c
main/output.c
main/php_globals.h
main/php_output.h
php.ini-dist
php.ini-recommended

diff --git a/NEWS b/NEWS
index 3c7c753909927273d445660c2c47f560926f757c..88ae9870a31884f329608c5a3f0d5b1d23f63b20 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -31,8 +31,6 @@ PHP 4                                                                      NEWS
   . Implemented object signal callback ability by using array($obj, $method)
   . Added a restart parameter to pcntl_signal, which allows you to disable
     the default of system call restarting
-- Added php.ini option "double_buffering" which forces an additional first
-  output buffer and improved handling of buffer sizes. (Marcus)
 - Changed DomNode->next_sibling() and DomNode->previous_sibling() to return
   NULL instead of false (W3C specs). (chregu)
 - Changed DomNode->insert_before() and DomNode->append_child() to conform to
index 31dfdd71cfdac2202dbf4a0957601179985ecb81..8ff085b5e177bc07a7aaeb941db9685d0ab236c8 100644 (file)
@@ -197,24 +197,6 @@ static PHP_INI_MH(OnUpdateTimeout)
 }
 /* }}} */
 
-/* {{{ OnUpdateOutputBuffering
- */
-static PHP_INI_MH(OnUpdateOutputBuffering)
-{
-       if(!strncasecmp(new_value, "off", sizeof("off"))) {
-               new_value = "0";
-               new_value_length = sizeof("0");
-       } else if(!strncasecmp(new_value, "on", sizeof("on"))) {
-               new_value = "1";
-               new_value_length = sizeof("1");
-       }
-       OnUpdateInt(entry, new_value, new_value_length, mh_arg1, mh_arg2, mh_arg3, stage TSRMLS_CC);
-       
-       return SUCCESS;
-}
-/* }}} */
-
-
 /* Need to convert to strings and make use of:
  * PHP_SAFE_MODE
  *
@@ -267,8 +249,7 @@ PHP_INI_BEGIN()
        STD_PHP_INI_BOOLEAN("magic_quotes_gpc",         "1",            PHP_INI_ALL,            OnUpdateBool,                   magic_quotes_gpc,               php_core_globals,       core_globals)
        STD_PHP_INI_BOOLEAN("magic_quotes_runtime",     "0",            PHP_INI_ALL,            OnUpdateBool,                   magic_quotes_runtime,   php_core_globals,       core_globals)
        STD_PHP_INI_BOOLEAN("magic_quotes_sybase",      "0",            PHP_INI_ALL,            OnUpdateBool,                   magic_quotes_sybase,    php_core_globals,       core_globals)
-       STD_PHP_INI_ENTRY("output_buffering",           "0",            PHP_INI_PERDIR|PHP_INI_SYSTEM,OnUpdateOutputBuffering,  output_buffering,               php_core_globals,       core_globals)
-       STD_PHP_INI_ENTRY("double_buffering",           "0",            PHP_INI_PERDIR|PHP_INI_SYSTEM,OnUpdateOutputBuffering,  double_buffering,               php_core_globals,       core_globals)
+       STD_PHP_INI_ENTRY("output_buffering",   "0",    PHP_INI_PERDIR|PHP_INI_SYSTEM,OnUpdateInt,      output_buffering,       php_core_globals,       core_globals)
        STD_PHP_INI_ENTRY("output_handler",                     NULL,           PHP_INI_PERDIR|PHP_INI_SYSTEM,OnUpdateString,   output_handler,         php_core_globals,       core_globals)
        STD_PHP_INI_BOOLEAN("register_argc_argv",       "1",            PHP_INI_PERDIR|PHP_INI_SYSTEM,OnUpdateBool,     register_argc_argv,             php_core_globals,       core_globals)
        STD_PHP_INI_BOOLEAN("register_globals",         "0",            PHP_INI_PERDIR|PHP_INI_SYSTEM,OnUpdateBool,     register_globals,               php_core_globals,       core_globals)
@@ -846,7 +827,12 @@ int php_request_startup(TSRMLS_D)
                        php_start_ob_buffer_named(PG(output_handler), 0, 1 TSRMLS_CC);
                }
                else if (PG(output_buffering)) {
-                       php_start_ob_buffer(NULL, 0, 1 TSRMLS_CC);
+                       if (PG(output_buffering)>1) {
+                               php_start_ob_buffer(NULL, PG(output_buffering), 0 TSRMLS_CC);
+                       }
+                       else {
+                               php_start_ob_buffer(NULL, 0, 1 TSRMLS_CC);
+                       }
                }
                else if (PG(implicit_flush)) {
                        php_start_implicit_flush(TSRMLS_C);
index 503346ebd43ac14b64cca06dc189d35ff356c2e9..88928bc62facaac7980019fee9132d7bbadd82ff 100644 (file)
@@ -113,61 +113,23 @@ PHPAPI int php_header_write(const char *str, uint str_length TSRMLS_DC)
        }
 }
 
-/* {{{ php_ob_default_buffer_size
- * Start output buffering */
-PHPAPI int php_ob_default_buffer_size(TSRMLS_D)
-{
-       uint buffer_size = (uint)(PG(output_buffering) > 1 ? PG(output_buffering) : 4096);
-       if (OG(ob_nesting_level)==0 && PG(double_buffering)!=0) {
-               buffer_size = (uint)(PG(double_buffering)) >= buffer_size ? (uint)(PG(double_buffering)) : 4*buffer_size;
-       }
-       return buffer_size;
-}
-/* }}} */
-
 /* {{{ php_start_ob_buffer
  * Start output buffering */
 PHPAPI int php_start_ob_buffer(zval *output_handler, uint chunk_size, zend_bool erase TSRMLS_DC)
 {
-       uint initial_chunk_size, initial_size, block_size;
-
-       if (OG(ob_lock)) {
-               php_error_docref("ref.outcontrol" TSRMLS_CC, E_ERROR, "Cannot use output buffering in output buffering display handlers");
-               return FAILURE;
-       }
-       if (OG(ob_nesting_level)==0 && PG(double_buffering)) {          
-               initial_chunk_size = php_ob_default_buffer_size(TSRMLS_C);
-               initial_size = 4*initial_chunk_size;
-               block_size = initial_chunk_size;
-               php_ob_init(initial_size, block_size, NULL, initial_chunk_size, erase TSRMLS_CC);
-       }
-       if (chunk_size<2) {
-               chunk_size = php_ob_default_buffer_size(TSRMLS_C);
-       }
-       block_size = chunk_size;
-       initial_size = block_size;
-       return php_ob_init(initial_size, block_size, output_handler, chunk_size, erase TSRMLS_CC);
-}
-/* }}} */
+       uint initial_size, block_size;
 
-/* {{{ php_start_ob_buffer_nc
- * Start output buffering */
-PHPAPI int php_start_ob_buffer_ibc(zval *output_handler, uint initial_size, uint block_size, uint chunk_size, zend_bool erase TSRMLS_DC)
-{
        if (OG(ob_lock)) {
                php_error_docref("ref.outcontrol" TSRMLS_CC, E_ERROR, "Cannot use output buffering in output buffering display handlers");
                return FAILURE;
        }
-       if (chunk_size==0) {
+       if (chunk_size) {
+               initial_size = (chunk_size*3/2);
+               block_size = chunk_size/2;
+       } else {
+               initial_size = 40*1024;
                block_size = 10*1024;
-               initial_size = 4*block_size;
-       } else if (chunk_size==1) {
-               chunk_size = php_ob_default_buffer_size(TSRMLS_C);
        }
-       if (!block_size)
-               block_size = chunk_size;
-       if (!initial_size)
-               initial_size = block_size;
        return php_ob_init(initial_size, block_size, output_handler, chunk_size, erase TSRMLS_CC);
 }
 /* }}} */
@@ -366,9 +328,6 @@ PHPAPI void php_end_implicit_flush(TSRMLS_D)
  */
 PHPAPI void php_ob_set_internal_handler(php_output_handler_func_t internal_output_handler, uint buffer_size, char *handler_name, zend_bool erase TSRMLS_DC)
 {
-       if (buffer_size<2) {
-               buffer_size = php_ob_default_buffer_size(TSRMLS_C);
-       }
        if (OG(ob_nesting_level)==0 || OG(active_ob_buffer).internal_output_handler || strcmp(OG(active_ob_buffer).handler_name, OB_DEFAULT_HANDLER_NAME)) {
                php_start_ob_buffer(NULL, buffer_size, erase TSRMLS_CC);
        }
@@ -376,7 +335,6 @@ PHPAPI void php_ob_set_internal_handler(php_output_handler_func_t internal_outpu
        OG(active_ob_buffer).internal_output_handler = internal_output_handler;
        OG(active_ob_buffer).internal_output_handler_buffer = (char *) emalloc(buffer_size);
        OG(active_ob_buffer).internal_output_handler_buffer_size = buffer_size;
-       OG(active_ob_buffer).chunk_size = buffer_size;
        if (OG(active_ob_buffer).handler_name)
                efree(OG(active_ob_buffer).handler_name);
        OG(active_ob_buffer).handler_name = estrdup(handler_name);
@@ -432,10 +390,6 @@ static int php_ob_init_named(uint initial_size, uint block_size, char *handler_n
                        php_error_docref("ref.outcontrol" TSRMLS_CC, E_WARNING, "output handler '%s' cannot be used twice", handler_name);
                        return FAILURE;
                }
-               if (!handler_gz && SG(headers_sent)) {
-                       php_error_docref("ref.outcontrol" TSRMLS_CC, E_WARNING, "output handler '%s' cannot be activated - headers already sent", handler_name);
-                       return FAILURE;
-               }
                if (!handler_gz && php_ob_init_conflict(handler_name, "zlib output compression" TSRMLS_CC))
                        return FAILURE;
                if (!handler_mb && php_ob_init_conflict(handler_name, "ob_iconv_handler" TSRMLS_CC))
@@ -763,7 +717,7 @@ PHP_FUNCTION(ob_start)
                                                          &chunk_size, &erase) == FAILURE)
                RETURN_FALSE;
 
-       if (php_start_ob_buffer_ibc(output_handler, 0, 0, chunk_size, erase TSRMLS_CC)==FAILURE) {
+       if (php_start_ob_buffer(output_handler, chunk_size, erase TSRMLS_CC)==FAILURE) {
                RETURN_FALSE;
        }
        RETURN_TRUE;
@@ -904,8 +858,8 @@ static int php_ob_buffer_status(php_ob_buffer *ob_buffer, zval *result)
        else {
                add_assoc_long(elem, "type", PHP_OUTPUT_HANDLER_USER);
                add_assoc_long(elem, "initial_size", ob_buffer->size);
+               add_assoc_long(elem, "chunk_size", ob_buffer->chunk_size);
        }
-       add_assoc_long(elem, "chunk_size", ob_buffer->chunk_size);
        add_assoc_long(elem, "status", ob_buffer->status);
        add_assoc_string(elem, "name", ob_buffer->handler_name, 1);
        add_assoc_bool(elem, "del", ob_buffer->erase);
index 4f8755aa4b0d5f8940e7e211bdee28914dcb0968..579201f75d286e5e54e3ac604a4f93927b3d5009 100644 (file)
@@ -58,7 +58,6 @@ struct _php_core_globals {
        zend_bool implicit_flush;
 
        int output_buffering;
-       int double_buffering;
 
        char *safe_mode_include_dir;
        zend_bool safe_mode_gid;
index a9cb0fd0912da91136a1588a56357ecc3df68b2a..0c485e834c86e249bf3bff00383e515fa778f926 100644 (file)
@@ -31,7 +31,6 @@ PHPAPI int  php_body_write(const char *str, uint str_length TSRMLS_DC);
 PHPAPI int  php_header_write(const char *str, uint str_length TSRMLS_DC);
 PHPAPI int php_start_ob_buffer(zval *output_handler, uint chunk_size, zend_bool erase TSRMLS_DC);
 PHPAPI int php_start_ob_buffer_named(const char *output_handler_name, uint chunk_size, zend_bool erase TSRMLS_DC);
-PHPAPI int php_start_ob_buffer_ibc(zval *output_handler, uint initial_size, uint block_size, uint chunk_size, zend_bool erase TSRMLS_DC);
 PHPAPI void php_end_ob_buffer(zend_bool send_buffer, zend_bool just_flush TSRMLS_DC);
 PHPAPI void php_end_ob_buffers(zend_bool send_buffer TSRMLS_DC);
 PHPAPI int php_ob_get_buffer(zval *p TSRMLS_DC);
@@ -42,7 +41,6 @@ PHPAPI char *php_get_output_start_filename(TSRMLS_D);
 PHPAPI int php_get_output_start_lineno(TSRMLS_D);
 PHPAPI void php_ob_set_internal_handler(php_output_handler_func_t internal_output_handler, uint buffer_size, char *handler_name, zend_bool erase TSRMLS_DC);
 PHPAPI int php_ob_handler_used(char *handler_name TSRMLS_DC);
-PHPAPI int php_ob_default_buffer_size(TSRMLS_D);
 
 PHP_FUNCTION(ob_start);
 PHP_FUNCTION(ob_flush);
index 450cc6a8f5eff6ff20e9f1dee241b114795e1c47..65af29e25ff4024c755d1f212ab12ea6932a690c 100644 (file)
@@ -100,14 +100,6 @@ output_buffering = Off
 ;       and you cannot use both "ob_gzhandler" and "zlib.output_compression". 
 ;output_handler =
 
-; Normally you won't use an additional first output buffer when using any 
-; special output handler but you can enforce this since it can help to reduce 
-; memory used by output buffering when huge output chunks and total server 
-; throughput are preferred. This value can either be set 'On' in which case the
-; additional buffer is four times the size of all other output buffers or any
-; greater size.
-;double_buffering = Off
-
 ; Transparent output compression using the zlib library
 ; Valid values for this option are 'off', 'on', or a specific buffer size
 ; to be used for compression (default is 4KB)
index f6225ae9b14f6c6d1fa0b9ba41ba5fa54a43bf28..ae99b22606668b6e1bf788c31d2447ae2cea1afd 100644 (file)
@@ -113,14 +113,6 @@ output_buffering = 4096
 ;       and you cannot use both "ob_gzhandler" and "zlib.output_compression". 
 ;output_handler =
 
-; Normally you won't use an additional first output buffer when using any 
-; special output handler but you can enforce this since it can help to reduce 
-; memory used by output buffering when huge output chunks and total server 
-; throughput are preferred. This value can either be set 'On' in which case the
-; additional buffer is four times the size of all other output buffers or any
-; greater size.
-;double_buffering = Off
-
 ; Transparent output compression using the zlib library
 ; Valid values for this option are 'off', 'on', or a specific buffer size
 ; to be used for compression (default is 4KB)