【发布时间】:2013-12-07 11:37:43
【问题描述】:
我有一个页面需要几分钟才能调用一些函数。我希望输出在生成时显示。可以这样模拟:
for($i = 0; $i < 5; $i++) {
sleep(1);
echo '*';
}
我尝试过使用 flush() 和 ob_flush(),但结果是它只会在 5 秒后立即显示所有星号。
我尝试过这样的事情:
$(function(){
$('body').load('http://example.com/test.php');
});
但它只是在 5 秒后一次性显示所有星号。
是否可以在 PHP 文件中放入一种标头,以便浏览器在收到内容时加载内容?
jQuery AJAX 能否允许在生成输出时显示输出?如果有,怎么做?
【问题讨论】:
-
你打过ob_start吗?
-
你不能可靠地做到这一点,因为从服务器脚本到客户端的路径上有很多缓冲区,但你应该将任务拆分为一个进程并轮询它。
-
我尝试了一些其他人的代码,有些使用了 ob_start
-
这到底有什么意义?为什么要在服务器端这样做?
-
我制作了一个实用程序,它使用在线服务将大约 200 个短语翻译成大约 15 种语言。工作需要几分钟,我想显示语言加上一些点来显示该语言的进度(每个短语一个点)。翻译被保存到数据库中。我认为用 PHP 做这一切会比使用一些 javascript/jQuery 更快。好吧,至少它会更简单。