【发布时间】:2015-04-24 15:30:14
【问题描述】:
我正在尝试使用 php 中的 for 循环将行插入 MySQL 数据库。我想要的是在完成时回显正在插入的特定行名。我尝试了flush方法,但是没有用,甚至ob_flush都没有。
然后我在这里搜索了解决方案并找到了一些解决方案,尝试了所有方法,但是当整个脚本完成后,我仍然可以一次得到所有输出......
我的代码看起来像这样(我添加了一些我在网上找到的可以解决问题的行,但仍然没有运气,在下面的代码中我删除了 mysql 的东西,因为它工作正常,数据被写入分贝):
<?php
header( 'Content-type: text/html; charset=utf-8' );
ob_implicit_flush(true);
ob_end_flush();
$con=mysqli_connect("...");
?>
<html>
<body>
<?php
for($d=1;$d<=5;$d++){
echo "$d";
echo str_repeat(' ', 4096);
ob_flush();
flush();
$query = "...";
mysqli_query($con,$query);
}
</body>
</html>
在这种情况下,脚本当然会立即运行,但在实际场景中,每个循环实际上需要一些时间来完成其中的内容,所以在大约 10 秒后一切都完成后,我得到了最终的回显。我想在每次 for 循环迭代后回显它,即大约每 2 秒
【问题讨论】:
-
基于浏览器的输出与基于命令行或控制台的输出不同。您可以考虑使用异步请求来填充查询执行结果。
-
控制台也没有显示任何内容,在这种情况下,我将如何在浏览器中刷新它,换句话说,我只想让用户看到发生了什么以及脚本有多远
标签: php html mysql google-chrome