- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我对 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.
我对 discarded
和 destroyed
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/
我有一个需要几分钟才能完成处理的 PHP 脚本。当页面仍在加载时,我想在可用时显示部分 PHP 输出,这可以使用 ob_start() 和 ob_flush() 来完成。 在整个脚本执行完毕后,我想从
当我在本地主机(通过 MAMP)上调用 PHP 的 ob_flush() 函数时,出现以下错误: Notice: ob_flush() [ref.outcontrol]: failed to flus
在我的网站(使用 drupal 运行)中,ob_flush 函数需要很长时间(在 10 - 100 秒之间)才能执行。我如何找出原因?是什么导致了这么长时间? 最佳答案 试试这个: ob_start(
我正在使用 iframe 方法编写文件上传脚本。在后端,文件上传后,脚本还做了一些事情。因此,一旦文件上传,我就会将输出刷新到浏览器(进入 iframe),然后脚本继续。从 Chrome 控制台我可以
我正在用 PHP 编写一个应用程序,我决定自己做一些测试以确定 PHP 处理缓冲区和缓冲的能力。具体来说,我想看看手动调用 ob_start() 和 ob_flush() 是否会对我的程序产生巨大影响
我已经尝试了几次尝试让我的 flush 和 ob_flush 工作。我试过设置 ini 以允许缓冲,我试过使用我在网上找到的几个不同的函数来进行输出缓冲,但没有一个起作用。该脚本想要等到它完全完成,直
有关php的ob_flush()与flush()使用方法 注意:ob_flush()和flush()这两个函数一般要一起使用,顺序是先ob_flush(),然后flush(),它们的作用是刷新缓冲
flush()、ob_flush()、ob_end_flush()三者的区别: 首先,说下buffer,它是一个内存地址空间,为4096(1kb)【在php.ini配置文件中找到output_bu
我遇到了 PHP ob_flush(); 的问题 似乎它只在 IE10 中不起作用。 gzip 和缓存在服务器上被禁用,它在除 IE10 之外的任何地方都有效。 如果有人知道如何解开这个谜团,我将不胜
我有以下 PHP 脚本: "; ob_flush(); flush(); sleep(1); } ob_end_flush(); ?> 它在 WAMP 本地主机上工作正常并且每
我对 PHP 函数 ob_flush() 和 ob_end_flush() 感到困惑。关于函数 ob_flush manual说 The buffer contents are discarded a
如果我从 XAMPP 上的本地服务器在 chrome 中加载此脚本: header("Content-Type:text/plain"); set_time_limit(0); $max = 40;
我刚看完this post The loading time of webpages is improved by enabling gzip compression on server. Bette
ob_clean() 和 ob_flush() 有什么区别? 此外,ob_end_clean() 和 ob_end_flush() 之间有什么区别?我知道 ob_get_clean() 和 ob_ge
ob_flush() 和 flush() 有什么区别,为什么必须同时调用? ob_flush() reference说: This function will send the contents of
我的意思是...让我们只发出一个 AJAX 请求并将结果插入到 div#result 中.. 在后端,脚本使用ob_flush() 发送 header 但不会终止请求,直到它终止(使用exit 或ob
嗨请查看以下代码: \n"; for( $i = 0 ; $i \n"; ob_flush(); flush(); sleep(1); } echo "End ...\n";
我正在使用 ob_start()/ob_flush(),希望在长时间的导入操作中给我一些进展。 这是我正在做的事情的简单概述: "; $conn = ftp_connect($ftp_site) or
搜索了很多,但找不到太多关于这个的信息.. 我有一个通过循环处理很多事情的页面,我把它放在 php 页面的顶部: ob_implicit_flush(true); ob_end_flush(); 这很
像下面这样在 php 中进行错误处理是否可以接受?我对ob_start()/ob_clean()/ob_flush()不是很熟悉,所以我想知道使用它们有什么不好的影响吗?例如,它们会影响性能吗?
我是一名优秀的程序员,十分优秀!