我想显示一个引导警报:
<div class="alert alert-warning" id="slow_loading_data">
<strong>Warning!</strong> Retrieving a large quantity of data, please wait.
</div>
我希望在运行PHP代码的其余部分之前立即显示它。我有一个SQL语句从MySQL数据库中检索超过5000条记录,所以我希望用户知道页面正在加载。
$sql = "SELECT * FROM " . dbname_bowl . ".ball_model";
try {
$query = $conn->prepare($sql);
$query->execute();
while($data = $query->fetch()) {
$modelID = $data['modelID'];
$model[$modelID]['name'] = $data['name'];
}
$query->closeCursor();
} catch (Exception $e) {
$error_message = 'There was an error processing your request. Page aborted. Please contact the System Administrator with Date & Time of your error. (' . date('Y-m-d H:i:s',time()) . ")";
$application->enqueueMessage(JText::_($error_message), 'error');
return;
}
任何有助于解决此问题的帮助都将不胜感激。
答案 0 :(得分:0)
您想要做的是在循环之前将输出刷新到屏幕。您可以使用ob_flush
&amp; PHP的flush
方法
请尝试以下方法:
在<?php
之后(或session_start()
之后,如果你有),请添加以下行:
if (ob_get_level() == 0) ob_start();
这将打开输出缓冲区。阅读/倾斜更多ob_start。
然后,在$sql = ...
位之前,添加以下内容:
ob_flush();
flush();
ob_flush
的作用是:
刷新(发送)输出缓冲区
flush
方法的作用是:
刷新系统输出缓冲区
如果不起作用,请在ob_flush()
之前添加以下内容:
echo str_pad("", 4096);
(通过添加上面的echo
,您会欺骗它认为 有足够的数据来执行刷新)
ob_flush
的PHP手册页上dermeister的每条评论需要注意的另一件事 -
ob_flush()和flush()的一些问题可以通过定义内容类型标题来解决:
header( 'Content-type: text/html; charset=utf-8' );