下面是我希望每秒打印消息的代码示例。
set_time_limit(60);
foreach($array as $key => $value)
{
echo $value;
sleep(5);
}
我想知道JS脚本应该如何在循环的每个步骤中立即输出$value的结果,而不等待直到它停止?
不能使用JavaScript访问PHP变量。JavaScript在浏览器内运行,而PHP在服务器上运行。
您必须使用fab的解决方案,并通过echo和flush()将当前输出缓冲区发送到浏览器。但是一旦你这样做了,就不需要再使用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);
}