How do echo out progress on MAMP using flush()(如何使用flush()回显MAMP上的进度)
本文介绍了如何使用flush()回显MAMP上的进度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试在MAMP上运行一个简单的PHP脚本。我使用的是PHP5.2.17,并且关闭了压缩。我正在尝试执行此简单脚本
<?php
ob_flush();
foreach(range(1,9) as $n){
echo $n."
";
flush();
sleep(1);
}
出于SME的原因,它没有做它应该做的事情。它不是顺序地回显数字,而是在循环完成时简单地回显它们。我是不是遗漏了什么?有没有其他方法可以做到这一点?
推荐答案
输出缓冲是一种控制输出数据量的机制 (不包括Header和Cookie)PHP应该在内部保留之前 将数据推送到客户端。如果您的应用程序的输出超过 在此设置中,PHP将以大致相同大小的块发送数据 由您指定。打开此设置并管理其最大缓冲区 尺寸可能会产生一些有趣的副作用,这取决于您的 应用程序和Web服务器。您可能能够发送标头和 在您已经通过打印或回显发送输出之后的Cookie。你 如果您的服务器排放较少,还可能获得性能优势 由于缓冲输出而产生的数据包数与同时传输输出的PHP数据包数 明白了。在生产服务器上,4096字节是一个很好的设置 性能原因。注意:还可以通过输出缓冲控制来控制输出缓冲 函数。
php.ini可能的值:
On = Enabled and buffer is unlimited. (Use with caution)
Off = Disabled
Integer = Enables the buffer and sets its maximum size in bytes.
eg: output_buffering = Off
注意:对于CLI SAPI,此指令已硬编码为OFF
http://php.net/output-buffering
将OUTPUT_BUFFERING设置为4096的工作示例
<?php
ob_start();
// Output string to overflow browser php.ini output_buffering setting.
echo str_repeat(PHP_EOL, 4097);
for ($i=0; $i<5; $i++) {
echo PHP_EOL.$i;
ob_flush();
flush();
sleep(1);
}
ob_end_flush();
?>
这篇关于如何使用flush()回显MAMP上的进度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:如何使用flush()回显MAMP上的进度
猜你喜欢
- 如何在 Symfony2 中正确使用 webSockets 2021-01-01
- PHP - if 语句中的倒序 2021-01-01
- Laravel 5:Model.php 中的 MassAssignmentException 2021-01-01
- openssl_digest vs hash vs hash_hmac?盐与盐的区别HMAC? 2022-01-01
- 如何使用 Google API 在团队云端硬盘中创建文件夹? 2022-01-01
- 覆盖 Magento 社区模块控制器的问题 2022-01-01
- 如何从数据库中获取数据以在 laravel 中查看页面? 2022-01-01
- PHP foreach() 与数组中的数组? 2022-01-01
- Oracle 即时客户端 DYLD_LIBRARY_PATH 错误 2022-01-01
- 使用 GD 和 libjpeg 支持编译 PHP 2022-01-01