]> granicus.if.org Git - php/commitdiff
Improve memory consumption on chunked output buffering
authorZeev Suraski <zeev@php.net>
Sun, 4 Mar 2001 15:46:13 +0000 (15:46 +0000)
committerZeev Suraski <zeev@php.net>
Sun, 4 Mar 2001 15:46:13 +0000 (15:46 +0000)
ext/standard/output.c
main/output.c

index 1b4a6569811e10fc79faca2f15046c41eccdb052..6f2ad8140e2a3057b885ca499770b16b58912f6f 100644 (file)
@@ -106,7 +106,11 @@ PHPAPI int php_start_ob_buffer(zval *output_handler, uint chunk_size)
        if (OG(lock)) {
                return FAILURE;
        }
-       php_ob_init(40*1024, 10*1024, output_handler, chunk_size);
+       if (chunk_size) {
+               php_ob_init((chunk_size*3/2), chunk_size/2, output_handler, chunk_size);
+       } else {
+               php_ob_init(40*1024, 10*1024, output_handler, chunk_size);
+       }
        OG(php_body_write) = php_b_body_write;
        return SUCCESS;
 }
@@ -301,7 +305,6 @@ static void php_ob_append(const char *text, uint text_length)
        if (OG(active_ob_buffer).chunk_size
                && OG(active_ob_buffer).text_length >= OG(active_ob_buffer).chunk_size) {
                zval *output_handler = OG(active_ob_buffer).output_handler;
-               uint chunk_size = OG(active_ob_buffer).chunk_size;
 
                if (output_handler) {
                        output_handler->refcount++;
index 1b4a6569811e10fc79faca2f15046c41eccdb052..6f2ad8140e2a3057b885ca499770b16b58912f6f 100644 (file)
@@ -106,7 +106,11 @@ PHPAPI int php_start_ob_buffer(zval *output_handler, uint chunk_size)
        if (OG(lock)) {
                return FAILURE;
        }
-       php_ob_init(40*1024, 10*1024, output_handler, chunk_size);
+       if (chunk_size) {
+               php_ob_init((chunk_size*3/2), chunk_size/2, output_handler, chunk_size);
+       } else {
+               php_ob_init(40*1024, 10*1024, output_handler, chunk_size);
+       }
        OG(php_body_write) = php_b_body_write;
        return SUCCESS;
 }
@@ -301,7 +305,6 @@ static void php_ob_append(const char *text, uint text_length)
        if (OG(active_ob_buffer).chunk_size
                && OG(active_ob_buffer).text_length >= OG(active_ob_buffer).chunk_size) {
                zval *output_handler = OG(active_ob_buffer).output_handler;
-               uint chunk_size = OG(active_ob_buffer).chunk_size;
 
                if (output_handler) {
                        output_handler->refcount++;