我有一个循环需要很长时间才能执行,我希望脚本在循环迭代完成时显示某些东西.
- echo "Hello!";
- flush();
- for($i = 0; $i < 10; $i ++) {
- echo $i;
- //5-10 sec execution time
- flush();
- }
在整个脚本完成之前,这不会显示回音.什么地方出了错?
从PHP手册:
flush()可能无法覆盖Web服务器的缓冲方案,并且它对浏览器中的任何客户端缓冲都没有影响.它也不影响PHP的用户空间输出缓冲机制.这意味着如果您正在使用ob输出缓冲区,则必须调用ob_flush()和flush()来刷新ob输出缓冲区.
- echo "Hello!";
- flush();
- ob_flush();
- for($i = 0; $i < 10; $i ++) {
- echo $i;
- //5-10 sec execution time
- flush();
- ob_flush();
- }
– 或 – 您可以刷新并关闭缓冲
- <?PHP
- //Flush (send) the output buffer and turn off output buffering
- while (ob_get_level() > 0)
- ob_end_flush();
- echo "Hello!";
- for($i = 0; $i < 10; $i ++) {
- echo $i . "\r\n";
- }
- ?>