From a22ada795ffe1495a8aef049ab3bfa8191e06c6f Mon Sep 17 00:00:00 2001 From: Zeev Suraski Date: Sun, 4 Mar 2001 15:46:13 +0000 Subject: [PATCH] Improve memory consumption on chunked output buffering --- ext/standard/output.c | 7 +++++-- main/output.c | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ext/standard/output.c b/ext/standard/output.c index 1b4a656981..6f2ad8140e 100644 --- a/ext/standard/output.c +++ b/ext/standard/output.c @@ -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++; diff --git a/main/output.c b/main/output.c index 1b4a656981..6f2ad8140e 100644 --- a/main/output.c +++ b/main/output.c @@ -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++; -- 2.40.0