我想让PHP输出一些文本,然后睡一会儿,然后输出一些更多的文本。睡前PHP输出文本
<?php
echo 'Output one.';
usleep(1500000);
echo 'Output two.';
?>
我的问题是,所有的文本被同时推出 - 后等侯的1.5秒。我已经阅读了一些关于一个叫做flush的函数 - 但它似乎不起作用。也许我没有用它写。任何帮助将不胜感激^^
在此先感谢!
我想让PHP输出一些文本,然后睡一会儿,然后输出一些更多的文本。睡前PHP输出文本
<?php
echo 'Output one.';
usleep(1500000);
echo 'Output two.';
?>
我的问题是,所有的文本被同时推出 - 后等侯的1.5秒。我已经阅读了一些关于一个叫做flush的函数 - 但它似乎不起作用。也许我没有用它写。任何帮助将不胜感激^^
在此先感谢!
检查了这一点
<?php
ob_start();
echo 'Output one.';
ob_flush();
usleep(1500000);
echo 'Output two.';
ob_flush();
?>
虽然Pentium10的解决方案可能会工作,你可能要考虑这个移动到客户端。进行异步调用以获取第一个值,打印它,休眠所需的时间,然后重复第二个值。
我认为这是一个http请求/响应问题。在命令行中,脚本可以正常工作。
正常情况下,响应已准备完毕并发送给客户端。如果您的响应的大小必须发送多个tcp包,则可能会在脚本准备好处理之前发送第一个包。所以它取决于输出的大小。根据客户端/网络浏览器的不同,在完整的响应到达客户端之前,也可能会发生第一个包被渲染的情况。
作为Noufal Ibrahim即时通讯打字时回答,我完全同意他。以异步方式进行。
Pentium10的答案对我来说并不适用。但是当我去到PHP文档页面时,那里有很多好评。
http://php.net/manual/en/function.ob-flush.php
这为我工作使用的是Firefox 3.5.9,PHP 5.2.11,阿帕奇流失本地的Windows 7笔记本电脑:
echo "test";
ob_end_flush();
flush();
usleep(x);
echo "test";
的ob_end_flush()函数是为了获取发送的数据是至关重要的。
谢谢,工作! – 2015-12-26 12:39:24
echo 'Output one.';
ob_flush();
flush();
usleep(1500000);
echo 'Output two.';
你的问题是,这是PHP。这是一个预处理器。因此,PHP脚本运行,输出第一个日志,然后睡觉,然后输出第二个日志,只有它被发送并显示在浏览器中。
如果您希望延迟在浏览器屏幕上可见,则需要javascript。
function showLog() {
$(".secondlog").show();
}
$(document).ready(function() {
setTimeout(showLog,3000);
});
.firstlog {
border: 1px solid #AEAEAE;
}
.secondlog {
display: none;
border: 1px solid #AEAEAE;
margin-top: 20px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="firstlog">
Output of first log
</div>
<div class="secondlog">
Output of second log
</div>
<p>Wait for 3 seconds...</p>
这并没有为我工作,但我接着说:冲洗();''每次之后使用ob_flush();'然后它的工作。有人可以解释为什么我需要“冲洗”吗? – Salam 2018-03-05 09:25:49