0

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

set_time_limit(60);

foreach($array as $key => $value)
{
    echo $value;

    sleep(5);
}

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

4

3 回答 3

0

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

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

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

    sleep(5);
}
于 2013-02-28T10:59:50.330 回答
0

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......在那里操纵它的显示方式。

于 2013-02-28T11:02:30.040 回答
-1

为什么选择 JavaScript?

您可以在脚本完成之前随时发送输出flush()

set_time_limit(60);

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

    sleep(5);
}
于 2013-02-28T10:49:01.763 回答