0

我有以下 foreach 循环:

                <?php
            ob_start();
            foreach ($streams as &$stream) {
                $array = stream($stream);
            ?>
                <a href="livestreams.php?stream=<?=$stream;?>">
                    <div class="channel-preview" style="background-image:url(<?=$array[2];?>);">
                        <div class="container">
                            <hgroup>
                                <h1><?=$array[4];?></h1>
                                <h2><?=$array[3];?></h2>
                            </hgroup>

                            <div class="meta">
                                <span class="live-viewers">Live Viewers:</strong> <?=$array[1];?></span>
                            </div>

                            <span class="game-badge starcraft-2" title="Starcraft 2"><span class="hide">Starcraft 2</span></span>
                        </div>
                    </div>
                </a>
            <?php
                    ob_flush();
                    flush();
                }
                ob_end_flush();
            ?>

请注意,这只是整个脚本的一部分。它的问题是,它的加载速度相当慢。我曾尝试使用 ob_flush(); 如您所见,加快速度,但没有太大区别。

我的问题是整个页面的加载时间。页面甚至需要一些时间才能显示在浏览器中。是否可以在页面已经呈现时使用 AJAX 加载循环?或者还有其他方法吗?

编辑:

正在循环的内容是从外部服务器接收的,这很可能是导致延迟的原因。我应该早点说明这一点。

4

1 回答 1

0

像这样的简单技巧可能会起作用[如 php.net 上所建议的]

<?php
// All you need is 256 spaces first
echo str_repeat(" ", 256)."<pre>"; flush();

// and ANY TAG before \r\n
echo "working...<br/>\r\n"; flush(); sleep(1); // this in cycle
?>

编辑:在刷新后添加延迟也可以解决问题:

usleep(50000);// delay minimum of .05 seconds to allow ie to flush to screen

请在此处阅读有关冲洗问题的更多信息和建议的解决方法:http: //php.net/manual/en/function.flush.php

于 2012-06-28T19:59:22.070 回答