Added ob_flush_all() that flushes bufferred contents until it actually

sent/printed.
@ Added ob_flush_all() that flushes all buffers. (Yasuo)
This commit is contained in:
Yasuo Ohgaki 2002-10-03 07:17:14 +00:00
parent 4fbf3f77c0
commit 66a50c5373
4 changed files with 30 additions and 3 deletions

View File

@ -6,6 +6,8 @@ $euc_jp = "
mb_http_output('EUC-JP') or print("mb_http_output() failed\n");
ob_start('mb_output_handler');
echo $euc_jp;
ob_end_flush();
$output = ob_get_clean();
var_dump( $output );
?>

View File

@ -747,6 +747,7 @@ function_entry basic_functions[] = {
/* functions from output.c */
PHP_FE(ob_start, NULL)
PHP_FE(ob_flush, NULL)
PHP_FE(ob_flush_all, NULL)
PHP_FE(ob_clean, NULL)
PHP_FE(ob_end_flush, NULL)
PHP_FE(ob_end_clean, NULL)

View File

@ -739,7 +739,7 @@ PHP_FUNCTION(ob_start)
/* }}} */
/* {{{ proto bool ob_flush(void)
Flush (send) contents of the output buffers */
Flush (send) contents of the output buffer. The last buffer content is sent to next buffer */
PHP_FUNCTION(ob_flush)
{
if (ZEND_NUM_ARGS() != 0)
@ -749,12 +749,35 @@ PHP_FUNCTION(ob_flush)
php_error_docref("ref.outcontrol" TSRMLS_CC, E_NOTICE, "failed to flush buffer. No buffer to flush.");
RETURN_FALSE;
}
php_end_ob_buffer(1, 1 TSRMLS_CC);
RETURN_TRUE;
}
/* }}} */
/* {{{ proto bool ob_flush_all(void)
Flush (send) contents of output buffers. All buffered contents will be written/sent */
PHP_FUNCTION(ob_flush_all)
{
int orig;
if (ZEND_NUM_ARGS() != 0)
WRONG_PARAM_COUNT;
if (!OG(ob_nesting_level)) {
php_error_docref("ref.outcontrol" TSRMLS_CC, E_NOTICE, "failed to flush buffer. No buffer to flush.");
RETURN_FALSE;
}
orig = OG(implicit_flush); /* save current implicit flush state */
php_start_implicit_flush(TSRMLS_C);
php_end_ob_buffer(1, 1 TSRMLS_CC);
OG(implicit_flush) = orig;
RETURN_TRUE;
}
/* }}} */
/* {{{ proto bool ob_clean(void)
Clean (delete) the current output buffer */
PHP_FUNCTION(ob_clean)

View File

@ -47,6 +47,7 @@ PHPAPI int php_ob_get_length(zval *p TSRMLS_DC);
PHP_FUNCTION(ob_start);
PHP_FUNCTION(ob_flush);
PHP_FUNCTION(ob_flush_all);
PHP_FUNCTION(ob_clean);
PHP_FUNCTION(ob_end_flush);
PHP_FUNCTION(ob_end_clean);