如何在PHP中立即打印出echo?

发布于 2024-07-24 05:31:33 字数 127 浏览 7 评论 0原文

默认情况下,在整个页面执行完毕之前,它不会打印任何内容。

有没有什么功能可以让它立刻冲出来?

但不是多次调用 ob_end_flush() ,这不是我想要的。

希望你们能抓住我吗?

By default it will not print out anything until the whole page has finished executing.

Is there any function that can make it flush out right away?

But not by calling ob_end_flush() multiple times, which is not what I want.

Hope you guys got me?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

悲凉≈ 2024-07-31 05:31:34

如果输出缓冲打开,那么刷新它是向浏览器输出任何内容的唯一方法。 如果您想立即输出,请关闭输出缓冲。 如果这不在你的控制范围内,你可以在脚本的开头调用 ob_end_flush() ,这将关闭输出缓冲。 但是,无法让某些消息通过,而某些消息则不能(无需编写自定义 echo/print 函数),

调用 ob_end_flush() 将刷新并关闭最顶部的输出缓冲区。 为了确保所有输出缓冲区都关闭并刷新,您可以轻松执行以下操作:

while (@ob_end_flush());

If output buffering is on, then flushing it is the only way to output anything to the browser. If you want to output right away then turn of output buffering. If that is not in your control you can just call ob_end_flush() at the srart of your script which will turn the output buffering off. There is no way however to let some messages pass, and some not (without writing custom echo/print functions)

calling ob_end_flush() will flush and turn off the top most output buffer. To make sure all output buffers are turned off and flushes you can easily do this:

while (@ob_end_flush());
撩发小公举 2024-07-31 05:31:34

这将取决于您的网络服务器。 然而,调用 flush 将刷新当前打开的任何缓冲区的输出,正如链接页面上所述:

flush() 对 Web 服务器或客户端浏览器的缓冲方案没有影响。 因此,您需要调用 ob_flush() 和 flash() 来刷新输出缓冲区。

一些服务器,尤其是 Win32 上的服务器,仍然会缓冲脚本的输出,直到脚本终止,然后再将结果传输到浏览器。

Apache 的服务器模块(例如 mod_gzip)可能会进行自己的缓冲,这将导致 flash() 不会导致数据立即发送到客户端。

It will depend on your webserver. Calling flush will flush the output of whatever current buffer is open, however, as it says on the linked page:

flush() has no effect on the buffering scheme of your web server or the browser on the client side. Thus you need to call both ob_flush() and flush() to flush the output buffers.

Several servers, especially on Win32, will still buffer the output from your script until it terminates before transmitting the results to the browser.

Server modules for Apache like mod_gzip may do buffering of their own that will cause flush() to not result in data being sent immediately to the client.

最冷一天 2024-07-31 05:31:34

您可以关闭开发/测试服务器上的输出缓冲。 更改 php 中的 output_buffering 变量。 ini 配置文件。

You could turn off output-buffering on your development/test-server. Change the output_buffering variable in your php.ini configuration file.

萌化 2024-07-31 05:31:34

当没有要刷新的缓冲区时,如果在脚本顶部使用 ob_end_flush() 将引发通知。 如果您计划设置 cookie 或标头,这可能是一个问题。 我发现它并没有影响我的共享服务器(Rackspace 经销商)上的缓冲。

ob_end_flush() will throw a notice if it is used at the top of the script when there is no buffer to flush. This may be an issue if you are planning to set cookies or headers. I found it did not affect the buffering on my shared server (Rackspace Reseller).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文