加载页面的其余部分,然后使用PHP刷新其正文中的循环

加载页面的其余部分,然后使用PHP刷新其正文中的循环,php,html,ajax,server,flush,Php,Html,Ajax,Server,Flush,我想加载页面的布局,即页眉、导航栏和页脚,但在导航栏和页脚之间的正文中实现一个长时间运行的循环,它每隔一段时间刷新一次所做的事情。例如: <!DOCTYPE HTML> <html> <body> <header><!--some stuff--></header> <nav><!--some stuff--></nav> <a

我想加载页面的布局,即页眉、导航栏和页脚,但在导航栏和页脚之间的正文中实现一个长时间运行的循环,它每隔一段时间刷新一次所做的事情。例如:

<!DOCTYPE HTML>
<html>
    <body>
        <header><!--some stuff--></header>
        <nav><!--some stuff--></nav>
        <article>
            <h1>Flushtest</h1>
            <section>
<?php
    for ($i = 0; $i < 5; $i++) {
        echo "Test-$i!<br>";
        flush();
        ob_flush();
        sleep(1);
    }
?>
            </section>
        </article>
        <footer><!--some stuff--></footer>
    </body>
</html>

冲洗试验
如果我这样做,它会加载页眉和导航栏,然后每秒都会出现一条新的“Test-n”消息,当最后一个测试出现时,页脚最终会出现。 我希望页脚已经出现,然后在刷新时加载页面的中间部分。有办法吗

我尝试使用AJAX来实现这一点,但要么我强制它运行得非常慢,要么它会引发“请求太多”错误。另外,我希望页面在其选项卡中仍然显示一个“加载”图标,而AJAX不会这样做

编辑
当然,我已经为此挣扎了好几天,在这里提问的第二天,我找到了我的解决方案:只需使用
iframe
s.

,而不是执行大量单独的ajax请求,为什么不加载页面,然后向另一个PHP文件发出一个ajax请求,该文件执行循环正在执行的任何操作?@BrettGregson,因为如果这样做,PHP文件运行时我无法刷新。在PHP脚本完成之前,将PHP文件结果放入页面的AJAX函数不会被调用。因此,您希望每个项目都在完成时显示,而不仅仅是使用加载程序呈现页眉/页脚。如果单独完成,会有多少ajax请求?@BrettGregson。大约有250个请求。通过一些尝试和错误,我发现我需要在每个请求之间设置500毫秒的延迟,以防止出现“太多请求”消息。不过,我现在几乎找到了我要找的东西。我使用的是一个
iframe
,它在每个项目完成时输出它们。现在唯一的问题是,
iframe
并没有放大每个项目。我需要的是当
iframe
的内容更改时触发的事件,而“加载”似乎不起作用。您可以尝试使用
postMessage
在iframe和父对象之间进行通信(设置加载iframe时的大小)