这是我希望每秒打印消息的代码示例。
set_time_limit(60);
foreach($array as $key => $value)
{
echo $value;
sleep(5);
}
我想知道 JS 脚本应该如何在循环的每个步骤中立即输出 $value 的结果而不等到它停止?
这是我希望每秒打印消息的代码示例。
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);
}