PHP里的output_buffering 怎么开启?

PHP里的output_buffering 怎么开启?,第1张

在PHPINI可以设置以下与输出缓冲有关的:

名称 默认值 作用范围 修正记录

output_buffering "0" PHP_INI_PERDIR

output_handler NULL PHP_INI_PERDIR 自 PHP 404 起可用

implicit_flush "0" PHP_INI_ALL 在 PHP <= 423 版本中是 PHP_INI_PERDIR

简单解释如下:

output_buffering boolean/integer

该选项设置为 On 时,将在所有的脚本中使用输出控制。如果要限制输出缓冲区的最大值,可将该选项设定为指定的最大字节数(例如 output_buffering=4096)。从PHP 435 版开始,该选项在 PHP-CLI 下总是为 Off。

output_handler string

该选项可将脚本所有的输出,重定向到一个函数。例如,将 output_handler 设置为 mb_output_handler() 时,字符的编码将被修改为指定的编码。设置的任何处理函数,将自动的处理输出缓冲。

注意: 不能同时使用 mb_output_handler() 和 ob_iconv_handler(),也不能同时使用 ob_gzhandler() 和 zliboutput_compression。

注意: 只有内置函数可以使用此指令。对于用户定义的函数,使用 ob_start()。

implicit_flush boolean

默认为 FALSE。如将该选项改为 TRUE,PHP 将使输出层,在每段信息块输出后,自动刷新。这等同于在每次使用 print()、echo() 等函数或每个 HTML 块之后,调用 PHP 中的 flush() 函数。

不在web环境中使用 PHP 时,打开这个选项对程序执行的性能有严重的影响,通常只推荐在调试时使用。在 CLI SAPI 的执行模式下,该标记默认为 TRUE。

参见 ob_implicit_flush()。

设置了肯定会有用的,除非你修改的PHPINI位置不是系统使用的那个,比如一般是C::\WINDOWS\PHPINI,当然可以设置到其它地方。另外控制台程序是不缓冲的。

另外,你还可以在程序里面控制输出缓冲,请参考手册里面的“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();

>

for($i = 1; $i <= 300; $i++ ){

print(" ");

// 这一句话非常关键,cache的结构使得它的内容只有达到一定的大小才能从浏览器里输出

// 换言之,如果cache的内容不达到一定的大小,它是不会在程序执行完毕前输出的。经

// 过测试,我发现这个大小的底限是256个字符长。这意味着cache以后接收的内容都会

// 源源不断的被发送出去。

}

For($j = 1; $j <= 20; $j++) {

echo $j"

";

flush(); //这一部会使cache新增的内容被挤出去,显示到浏览器上

sleep(1); //让程序"睡"一秒钟,会让你把效果看得更清楚

}

当程序执行完了,就要输出的。

ob_start(); 的作用只是不让程序边执行边输出,而是保存到缓冲区当用到flush()或ob_end_flush()的时候输出。

而当程序执行完了之后,所有的缓冲都会被输出。所以,即便是你没调用那两个函数,也要输出。

注意一个概念:“边执行边输出”!

PHP缺省情况下是边执行边输出的,也就是说程序执行到有echo、print之类的语句的地方,就输出了。

没有,不过可以通过sleep函数来实现。

代码:

function setTimeout($func, $sec = 0, $timeout = 0, $args = array()) {

    if (!function_exists($func) || $timeout == 0) {

        return false;

    }

    while ($timeout > 0) {

        if (!empty($args) && is_array($args)) {

            call_user_func_array($func, $args);

        } else {

            call_user_func($func, $args);

        }

        flush();

        ob_flush();

        sleep($sec);

        $timeout--;

    }

    return false;

}

explode

implode

数组

in_array -- 检查数组中是否存在某个值

array -- 新建一个数组

count -- 计算数组中的单元数目或对象中的属性个数

range -- 建立一个包含指定范围单元的数组

array_key_exists -- 检查给定的键名或索引是否存在于数组中

array_keys -- 返回数组中所有的键名

array_map -- 将回调函数作用到给定数组的单元上

array_merge_recursive -- 递归地合并一个或多个数组

array_merge -- 合并一个或多个数组

array_push

mysql

mysql_connect

mysql_query

mysql_select_db -- 选择 MySQL 数据库

mysql_close -- 关闭 MySQL 连接

mysql_fetch_array -- 从结果集中取得一行作为关联数组,或数字数组,或二者兼有

mysql_fetch_assoc -- 从结果集中取得一行作为关联数组

mysql_fetch_field -- 从结果集中取得列信息并作为对象返回

mysql_fetch_lengths -- 取得结果集中每个输出的长度

mysql_fetch_object -- 从结果集中取得一行作为对象

mysql_fetch_row -- 从结果集中取得一行作为枚举数组

REG

preg_match_all -- 进行全局正则表达式匹配

preg_match -- 进行正则表达式匹配

preg_quote -- 转义正则表达式字符

preg_replace_callback -- 用回调函数执行正则表达式的搜索和替换

preg_replace -- 执行正则表达式的搜索和替换

preg_split -- 用正则表达式分割字符串

ereg_replace -- 正则表达式替换

ereg -- 正则表达式匹配

eregi_replace -- 不区分大小写的正则表达式替换

eregi -- 不区分大小写的正则表达式匹配

split -- 用正则表达式将字符串分割到数组中

spliti -- 用正则表达式不区分大小写将字符串分割到数组中

sql_regcase -- 产生用于不区分大小的匹配的正则表达式

字符串

str_getcsv -- Parse a CSV string into an array

str_ireplace -- Case-insensitive version of str_replace()

str_pad -- Pad a string to a certain length with another string

str_repeat -- Repeat a string

str_replace -- Replace all occurrences of the search string with the replacement string

str_rot13 -- Perform the rot13 transform on a string

str_shuffle -- Randomly shuffles a string

str_split -- Convert a string to an array

str_word_count -- Return information about words used in a string

strcasecmp -- Binary safe case-insensitive string comparison

strchr -- 别名 strstr()

strcmp -- Binary safe string comparison

strcoll -- Locale based string comparison

strcspn -- Find length of initial segment not matching mask

strip_tags -- Strip HTML and PHP tags from a string

stripcslashes -- Un-quote string quoted with addcslashes()

stripos -- Find position of first occurrence of a case-insensitive string

stripslashes -- Un-quote string quoted with addslashes()

stristr -- Case-insensitive strstr()

strlen -- Get string length

strnatcasecmp -- Case insensitive string comparisons using a "natural order" algorithm

strnatcmp -- String comparisons using a "natural order" algorithm

strncasecmp -- Binary safe case-insensitive string comparison of the first n characters

strncmp -- Binary safe string comparison of the first n characters

strpbrk -- Search a string for any of a set of characters

strpos -- Find position of first occurrence of a string

strrchr -- Find the last occurrence of a character in a string

strrev -- Reverse a string

strripos -- Find position of last occurrence of a case-insensitive string in a string

strrpos -- Find position of last occurrence of a char in a string

strspn -- Find length of initial segment matching mask

strstr -- Find first occurrence of a string

strtok -- Tokenize string

strtolower -- Make a string lowercase

strtoupper -- Make a string uppercase

strtr -- Translate certain characters

substr_compare -- Binary safe optionally case insensitive comparison of 2 strings from an offset, up to length characters

substr_count -- Count the number of substring occurrences

substr_replace -- Replace text within a portion of a string

substr -- Return part of a string

用flush()函数可以清除memcached中所有的key

memcached->flush()

手册中的demo:  10秒种那个参数可以不传

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12177423.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存