使用ob_flush和加载消息的PHP时间延迟

时间:2012-08-16 20:52:39

标签: php buffer sleep

我正在运行访问某些MySQL数据库的PHP脚本,我需要等待几秒钟,直到上一个脚本将所有信息输入数据库。等待时间不应该太长,但是如果服务器在休息日很慢,我在执行脚本之前使用sleep(10)等待10秒。我想显示“请等待”消息,等待10秒钟,但不幸的是,只有在10秒钟完成后才会显示该消息。这就是我的方式:

ob_start();
echo "Please wait while your invoice is being created... </br>";
ob_flush();
sleep(10);
ob_end_clean();
echo "Success...";

基于网上的一些研究,我的印象是ob_flush()会在10秒钟之前输出文本,然后ob_end_clean()将删除之前打印的文本,但我得到的却是10秒钟后,两个文本都显示,第一个文本没有被删除。你们知道我在这里做错了吗?

1 个答案:

答案 0 :(得分:0)

您无法编辑已经使用PHP输出的任何内容,这需要重新加载页面。 ob_flush只输出缓冲区并清空它。 ob_end_clean()停止输出缓冲,允许您再次正常输出。

要隐藏显示的文本,您将输出一个javascript来隐藏以前呈现的文本(最好包含在div中,以便于选择)。