gpt4 book ai didi

php - ob_flush 和 ob_end_flush 有什么区别?

转载 作者:可可西里 更新时间:2023-11-01 12:25:29 27 4
gpt4 key购买 nike

我对 PHP 函数 ob_flush()ob_end_flush() 感到困惑。关于函数 ob_flush manual

The buffer contents are discarded after ob_flush() is called.This function does not destroy the output buffer like ob_end_flush() does. 

我对 discardeddestroyed here 这两个词感到困惑。即使缓冲区内容在 ob_flush() 的情况下被丢弃,也无法访问它们,即使它们在 ob_end_flush() 的情况下被销毁,也无法访问。那么这两个函数有什么区别呢?

更新:

回应JamWaffles answer我不明白删除缓冲区中的所有内容但保留缓冲区与删除整个缓冲区(释放它)的意义因为 PHP 没有指针的概念并且您无法获取缓冲区的地址所以它应该是保留空缓冲区还是释放它并不重要

最佳答案

我认为在这种情况下它们的意思是一样的。 ob_flush() 用于将页面的部分 刷新到客户端,而 ob_end_flush() 刷新整个缓冲区,然后销毁缓冲区。 ob_flush() 所做的是删除缓冲区中 中的所有内容,但保留缓冲区本身以便在 ob_flush() 之后可以将更多数据放入其中> 打电话。


我会尽力解释得更好。

丢弃

假设我有一个漂亮的亮橙色塑料桶。这是我的缓冲区。然后我得到一些沙子,代表缓冲区的内容,然后将缓冲区(桶)填满。然后我拿起这个装满沙子的桶,把它倒进一个沙坑里,这是我的客户。你会发现沙子不见了,但水桶还在。这就是 缓冲区内容被丢弃 的意思——缓冲区本身可以重新使用(再次用沙子填满)。在内存方面,内存被清空但未被释放,因此可以再次填充。

销毁

现在,如果我们再次拿起我们的桶,再次装满沙子,倒空沙子,然后因为我们不再需要它而点燃桶,这称为销毁缓冲区 ;缓冲区中 中的数据已消失,但缓冲区本身也是如此。在内存方面,内存被释放用于其他用途。


OP 问道,如果没有指针,这在 PHP 中是否重要?嗯,这取决于你想做什么。如果您正在处理一个长页面,并希望(例如)在处理页面的其余部分以便在完成后发送时将页眉和边栏发送到客户端,请使用 ob_flush()

如果你想将某些内容刷新到客户端,而后没有任何输出,请使用 ob_end_flush()


我的意思是,用一种相当居高临下的语气说话绝对不是不尊重;我想打个比方,让定义尽可能清晰。

关于php - ob_flush 和 ob_end_flush 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7355356/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com