输出缓冲不起作用或没有任何意义
Output buffering not working or making any sense
我完全被难住了。我一定是遗漏了一些非常简单的东西,或者不明白它是如何工作的。
输出缓冲在 MAMP PRO 上根本不起作用,所有内容都只是显示在页面上,没有任何内容进入缓冲区,甚至没有 hello world。每个例子我都试过了
我正在创建一个简单的框架,但输出缓冲不起作用。
我有一个模块 class,其功能包括一个文件,代码只显示在页面上,我什至没有清除缓冲区。
我检查了加载的配置文件中的 php.ini 文件,配置文件显示 output_buffering = 4096。
我很困惑
代码示例如下:
//index.php
var_dump(ob_start());//returns true
echo "Hello World"; //prints straight to the screen
include MODULES.'/home.php'; //output comes straight out
var_dump(ob_get_contents());//Shows html string
$test = ob_get_contents();
echo $test; //Output gets displayed twice
在PHP.ini中:
output_buffering=4096;
ob_get_contents
不会清除缓冲区,因此当脚本结束时它会像往常一样刷新到输出。
如果您只想获取字符串形式的数据并清除缓冲区,请使用 ob_get_clean()
您可以将输出缓冲视为在输出缓冲区中创建 "bookmarks" 或 "restore points"。例如:
- 缓冲区为空
echo 'hello'
- 输出缓冲区有 "hello" 字符串
ob_start()
- "bookmark" 已创建
echo 'world'
- 输出缓冲区有两行 "hello" 和 "world" strings
ob_get_contents()
- returns 自上次以来输出缓冲区内容 "bookmark" - returns "world",但缓冲区内容保持不变
脚本结束并将整个输出缓冲区刷新到屏幕
如果您使用 ob_get_clean()
代替它 returns 自上次 "bookmark" 以来的内容并将其从输出缓冲区中删除 - 缓冲区只有 "hello"它
编辑:我知道这是非常简单和幼稚的解释,但我记得它对我理解这个概念有很大帮助。
我完全被难住了。我一定是遗漏了一些非常简单的东西,或者不明白它是如何工作的。
输出缓冲在 MAMP PRO 上根本不起作用,所有内容都只是显示在页面上,没有任何内容进入缓冲区,甚至没有 hello world。每个例子我都试过了
我正在创建一个简单的框架,但输出缓冲不起作用。
我有一个模块 class,其功能包括一个文件,代码只显示在页面上,我什至没有清除缓冲区。
我检查了加载的配置文件中的 php.ini 文件,配置文件显示 output_buffering = 4096。 我很困惑
代码示例如下:
//index.php
var_dump(ob_start());//returns true
echo "Hello World"; //prints straight to the screen
include MODULES.'/home.php'; //output comes straight out
var_dump(ob_get_contents());//Shows html string
$test = ob_get_contents();
echo $test; //Output gets displayed twice
在PHP.ini中: output_buffering=4096;
ob_get_contents
不会清除缓冲区,因此当脚本结束时它会像往常一样刷新到输出。
如果您只想获取字符串形式的数据并清除缓冲区,请使用 ob_get_clean()
您可以将输出缓冲视为在输出缓冲区中创建 "bookmarks" 或 "restore points"。例如:
- 缓冲区为空
echo 'hello'
- 输出缓冲区有 "hello" 字符串ob_start()
- "bookmark" 已创建echo 'world'
- 输出缓冲区有两行 "hello" 和 "world" stringsob_get_contents()
- returns 自上次以来输出缓冲区内容 "bookmark" - returns "world",但缓冲区内容保持不变脚本结束并将整个输出缓冲区刷新到屏幕
如果您使用
ob_get_clean()
代替它 returns 自上次 "bookmark" 以来的内容并将其从输出缓冲区中删除 - 缓冲区只有 "hello"它
编辑:我知道这是非常简单和幼稚的解释,但我记得它对我理解这个概念有很大帮助。