是否所有HTML都存储在输出缓冲区中?

时间:2015-07-30 15:54:13

标签: php

考虑以下PHP文件:

的index.php

<!DOCTYPE html>
    <head>
        <title>Welcome to my home page!</title>
    </head>
    <body>
    <?php
    for($i = 0; $i < 2000; ++$i)
    {
        echo $i.'<br>';
    }
    ?>
    </body>
</html>

PHP是否只将内容echo或静态HTML加载到内存中?

也许答案广为人知,但我没有找到任何文件。

我会喜欢RTM链接顺便说一句。

2 个答案:

答案 0 :(得分:1)

答案很简单,处理/找到php解释器读取整个文件所需的<?标签。 所以是的PHP加载整个文件。

PHP的ob(输出缓冲区)功能实际上允许您利用它。

请参阅on_start()文档的第一个示例说明此

<?php

function callback($buffer)
{
  // replace all the apples with oranges
  return (str_replace("apples", "oranges", $buffer));
}

ob_start("callback");

?>
<html>
<body>
<p>It's like comparing apples to oranges.</p>
</body>
</html>
<?php

ob_end_flush();

?>

http://php.net/manual/en/function.ob-start.php

答案 1 :(得分:0)

PHP的输出缓冲区包含所有内容。

请参阅:http://php.net/manual/en/language.basic-syntax.phpmode.php

  

这可以正常工作,因为当PHP解释器点击?&gt;   关闭标签,它只是开始输出它找到的任何东西(除了   紧接着的换行符 - 参见指令分离)   直到它击中另一个开口标记,除非在中间   条件陈述,在这种情况下,口译员将确定   在决定跳过什么之前有条件的结果   过度。请参阅下一个示例。

因此,PHP标记之外的任何内容基本上都被视为echo