PHP里的output_buffering 怎么开启?
output_buffering怎么开启我在PHP.INI里面已经全都设置了一下不过都没用应该怎么设置呢?...
output_buffering怎么开启 我在PHP.INI里面已经全都设置了一下 不过都没用 应该怎么设置呢?
展开
2个回答
展开全部
在PHP.INI可以设置以下与输出缓冲有关的:
名称 默认值 作用范围 修正记录
output_buffering "0" PHP_INI_PERDIR
output_handler NULL PHP_INI_PERDIR 自 PHP 4.0.4 起可用
implicit_flush "0" PHP_INI_ALL 在 PHP <= 4.2.3 版本中是 PHP_INI_PERDIR
简单解释如下:
output_buffering boolean/integer
该选项设置为 On 时,将在所有的脚本中使用输出控制。如果要限制输出缓冲区的最大值,可将该选项设定为指定的最大字节数(例如 output_buffering=4096)。从PHP 4.3.5 版开始,该选项在 PHP-CLI 下总是为 Off。
output_handler string
该选项可将脚本所有的输出,重定向到一个函数。例如,将 output_handler 设置为 mb_output_handler() 时,字符的编码将被修改为指定的编码。设置的任何处理函数,将自动的处理输出缓冲。
注意: 不能同时使用 mb_output_handler() 和 ob_iconv_handler(),也不能同时使用 ob_gzhandler() 和 zlib.output_compression。
注意: 只有内置函数可以使用此指令。对于用户定义的函数,使用 ob_start()。
implicit_flush boolean
默认为 FALSE。如将该选项改为 TRUE,PHP 将使输出层,在每段信息块输出后,自动刷新。这等同于在每次使用 print()、echo() 等函数或每个 HTML 块之后,调用 PHP 中的 flush() 函数。
不在web环境中使用 PHP 时,打开这个选项对程序执行的性能有严重的影响,通常只推荐在调试时使用。在 CLI SAPI 的执行模式下,该标记默认为 TRUE。
参见 ob_implicit_flush()。
设置了肯定会有用的,除非你修改的PHP.INI位置不是系统使用的那个,比如一般是C::\WINDOWS\PHP.INI,当然可以设置到其它地方。另外控制台程序是不缓冲的。
另外,你还可以在程序里面控制输出缓冲,请参考手册里面的“CXIV. Output Control 输出控制函数”那一章,主要有如下函数:
flush -- 刷新输出缓冲
ob_clean -- Clean (erase) the output buffer
ob_end_clean -- Clean (erase) the output buffer and turn off output buffering
ob_end_flush -- Flush (send) the output buffer and turn off output buffering
ob_flush -- Flush (send) the output buffer
ob_get_clean -- Get current buffer contents and delete current output buffer
ob_get_contents -- Return the contents of the output buffer
ob_get_flush -- Flush the output buffer, return it as a string and turn off output buffering
ob_get_length -- Return the length of the output buffer
ob_get_level -- Return the nesting level of the output buffering mechanism
ob_get_status -- Get status of output buffers
ob_gzhandler -- ob_start callback function to gzip output buffer
ob_implicit_flush -- Turn implicit flush on/off
ob_list_handlers -- List all output handlers in use
ob_start -- Turn on output buffering
output_add_rewrite_var -- Add URL rewriter values
output_reset_rewrite_vars -- Reset URL rewriter values
例子程序:
<?php
ob_start();
echo "Hello\n";
setcookie("cookiename", "cookiedata");
ob_end_flush();
?>
名称 默认值 作用范围 修正记录
output_buffering "0" PHP_INI_PERDIR
output_handler NULL PHP_INI_PERDIR 自 PHP 4.0.4 起可用
implicit_flush "0" PHP_INI_ALL 在 PHP <= 4.2.3 版本中是 PHP_INI_PERDIR
简单解释如下:
output_buffering boolean/integer
该选项设置为 On 时,将在所有的脚本中使用输出控制。如果要限制输出缓冲区的最大值,可将该选项设定为指定的最大字节数(例如 output_buffering=4096)。从PHP 4.3.5 版开始,该选项在 PHP-CLI 下总是为 Off。
output_handler string
该选项可将脚本所有的输出,重定向到一个函数。例如,将 output_handler 设置为 mb_output_handler() 时,字符的编码将被修改为指定的编码。设置的任何处理函数,将自动的处理输出缓冲。
注意: 不能同时使用 mb_output_handler() 和 ob_iconv_handler(),也不能同时使用 ob_gzhandler() 和 zlib.output_compression。
注意: 只有内置函数可以使用此指令。对于用户定义的函数,使用 ob_start()。
implicit_flush boolean
默认为 FALSE。如将该选项改为 TRUE,PHP 将使输出层,在每段信息块输出后,自动刷新。这等同于在每次使用 print()、echo() 等函数或每个 HTML 块之后,调用 PHP 中的 flush() 函数。
不在web环境中使用 PHP 时,打开这个选项对程序执行的性能有严重的影响,通常只推荐在调试时使用。在 CLI SAPI 的执行模式下,该标记默认为 TRUE。
参见 ob_implicit_flush()。
设置了肯定会有用的,除非你修改的PHP.INI位置不是系统使用的那个,比如一般是C::\WINDOWS\PHP.INI,当然可以设置到其它地方。另外控制台程序是不缓冲的。
另外,你还可以在程序里面控制输出缓冲,请参考手册里面的“CXIV. Output Control 输出控制函数”那一章,主要有如下函数:
flush -- 刷新输出缓冲
ob_clean -- Clean (erase) the output buffer
ob_end_clean -- Clean (erase) the output buffer and turn off output buffering
ob_end_flush -- Flush (send) the output buffer and turn off output buffering
ob_flush -- Flush (send) the output buffer
ob_get_clean -- Get current buffer contents and delete current output buffer
ob_get_contents -- Return the contents of the output buffer
ob_get_flush -- Flush the output buffer, return it as a string and turn off output buffering
ob_get_length -- Return the length of the output buffer
ob_get_level -- Return the nesting level of the output buffering mechanism
ob_get_status -- Get status of output buffers
ob_gzhandler -- ob_start callback function to gzip output buffer
ob_implicit_flush -- Turn implicit flush on/off
ob_list_handlers -- List all output handlers in use
ob_start -- Turn on output buffering
output_add_rewrite_var -- Add URL rewriter values
output_reset_rewrite_vars -- Reset URL rewriter values
例子程序:
<?php
ob_start();
echo "Hello\n";
setcookie("cookiename", "cookiedata");
ob_end_flush();
?>
展开全部
默认情况下,php buffer是开启的,而且该buffer默认值是4096,即4kb。
可以通过在php.ini配置文件中找到output_buffering配置.
当echo,print等输出用户数据的时候,输出数据都会写入到php output_buffering中,直到output_buffering写满,会将这些数据通过tcp传送给浏览器显示。
也可以通过ob_start()手动激活php output_buffering机制,使得即便输出超过了4kb数据,也不真的把数据交给tcp传给浏览器,因为ob_start()将php buffer空间设置到了足够大。
只有直到脚本结束,或者调用ob_end_flush函数,才会把数据发送给客户端浏览器。
可以通过在php.ini配置文件中找到output_buffering配置.
当echo,print等输出用户数据的时候,输出数据都会写入到php output_buffering中,直到output_buffering写满,会将这些数据通过tcp传送给浏览器显示。
也可以通过ob_start()手动激活php output_buffering机制,使得即便输出超过了4kb数据,也不真的把数据交给tcp传给浏览器,因为ob_start()将php buffer空间设置到了足够大。
只有直到脚本结束,或者调用ob_end_flush函数,才会把数据发送给客户端浏览器。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询