我有一个从上传表单调用的php脚本,该脚本将条目放入数据库。我希望在脚本运行时在浏览器上看到结果。我使用下面的代码,但输出在整个脚本执行完毕后显示。我的服务器是在Ubuntu上运行的Apache2。我想通过使用ob_start();
我可以看到脚本执行时的进度。我在代码中做错了吗?
ob_start();
foreach ($csvAsArray as $value)
{
$username = $value[0];
$password = $value[1];
$db->insert($username, $password, $machine);
echo $username . " Inserted into database! <br />";
ob_flush();
}
echo('done.');
ob_end_flush();
答案 0 :(得分:1)
您不需要ob_start:
<?php
for($i=0;$i<100;$i++)
{
echo $i;
flush();
ob_flush();
sleep(1);
}
echo 'done.';
ob_end_flush();
?>
来自评论:
php flush:刷新PHP的系统写缓冲区等等 后端PHP正在使用(CGI,Web服务器等)。这试图推动 当前输出一直到浏览器有一些警告。齐平() 可能无法覆盖Web服务器的缓冲方案 它对浏览器中的任何客户端缓冲没有影响。它 也不会影响PHP的用户空间输出缓冲机制。这个 意味着你必须同时调用ob_flush()和flush()来刷新 ob输出缓冲区,如果您正在使用它们。
答案 1 :(得分:0)
尝试使用ob_get_contents()来获取数据
ob_start();
foreach ($csvAsArray as $value)
{
$username = $value[0];
$password = $value[1];
$db->insert($username, $password, $machine);
echo $username . " Inserted into database! <br />";
}
$data = ob_get_contents();
ob_end_clean();
var_dump($data);