我正在寻找在每行上显示一个数字的东西,而不仅仅是页面加载后的所有数字。 例如代码是:
for($a=0;$a<=10;$a++){
echo $a;
echo '<br>';
}
输出当然是: 1 2 页面加载后一直到 10, 但我想让它表明, 1 然后2,浏览器不加载所有内容。
我想暂停一下,看看数字增加。
最佳答案
您可以使用 flush() 强制 php 刷新其输出。 。当然,如果PHP's output buffering启用后,这只会将其刷新到输出缓冲区中。
一旦 PHP 刷新,它不能保证直接到达浏览器,PHP 刷新到 Web 服务器,Web 服务器根据 Web 服务器自身的配置将其发送到浏览器。
但是,就 PHP 而言,以下内容将起作用(至少在命令行上,或者在您的网络服务器上,如果配置正确的话):
演示.php
<?php
ob_end_flush(); // make sure output buffering is off
for($i=0;$i<10;$i++){
echo "{$i}\n";
flush();
sleep(1);
}
从命令行:
$ php demo.php
应显示 1...2...3...,中间有一秒的延迟。
编辑:我又想到了一件事。即使 Web 服务器在您从 PHP 刷新时“流式传输”您的输出,如果您的输出位于其他标记中间,用户的浏览器在收到整个响应之前可能不会呈现任何内容。
也就是说,如果您正在做一些基本的事情,我已经使用上述策略来输出长时间运行的实用程序脚本的状态。在这些情况下,我什至可能没有在输出中包含标签,但它的工作方式就像您希望的那样(至少在我当时处理的服务器上)。
这种方法对于内部工具来说可能足够好,但我永远不会依赖这种技术来处理最终用户可能看到的任何内容。
关于php - 使用 for 语句 PHP 保持在线发布号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7591757/