在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秒种那个参数可以不传
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)