如何使用JS脚本立即显示PHP循环结果


How To Display PHP Loop Results Instantly Using JS Script

下面是我希望每秒打印消息的代码示例。

set_time_limit(60);
foreach($array as $key => $value)
{
    echo $value;
    sleep(5);
}

我想知道JS脚本应该如何在循环的每个步骤中立即输出$value的结果,而不等待直到它停止?

不能使用JavaScript访问PHP变量。JavaScript在浏览器内运行,而PHP在服务器上运行。

您必须使用fab的解决方案,并通过echoflush()将当前输出缓冲区发送到浏览器。但是一旦你这样做了,就不需要再使用JavaScript了,因为文本无论如何都会显示出来。

foreach($array as $key => $value)
{
    echo $value;
    flush();
    sleep(5);
}

Javascript可以(并且应该)为您做所有的计时工作,将数组输出为编码的JSON字符串,可以作为Javascript变量打印到HTML中,这将是更明智的。

<script>
var array = "<?php echo json_encode($array); ?>";
</script>

你可以很容易地使用javascript来解析数组,并使用浏览器显示每条消息间隔1秒。一旦将数组从JSON字符串转换回数组,如…

var clearInterval = setInterval(deliver_message,1000); // Run a function every second
function deliver_message() {
    document.write(array.shift()); //This could be a Jquery append, or similar
    if (array.length == 0)
        clearInterval(loop);
}

你的服务器端处理是有传递所有的信息给浏览器,它的客户端…javascript…

为什么是JavaScript?

您可以在脚本完成之前的任何时间发送输出,flush():

set_time_limit(60);
foreach($array as $key => $value)
{
    echo $value;
    flush();
    sleep(5);
}