【问题标题】:PHP: Best Method for Sequential Output?PHP:顺序输出的最佳方法?
【发布时间】:2009-04-14 20:46:55
【问题描述】:

为 PHP 安装程序脚本设置顺序输出的最佳方法是什么?假设我有一个页面,并希望在 PHP 脚本提供的 DIV 中显示增量输出。

所以page.html 可能包含以下内容:

<div id="output">
    <!-- Script Output Here -->
</div>

而 install.php 可能看起来像这样(用于测试目的):

<?php
// Turn off Output Buffering
ob_end_flush();

// Begin Test Output (5 second intervals)
echo 'Testing incremental output...' . "\n";
sleep(5);
echo 'Step 1...' . "\n";
sleep(5);
echo 'Step 2...' . "\n";
sleep(5);
echo 'Complete!' . "\n";

我认为 AJAX 可能是最好的方法,但我不确定如何处理。如果我通过 JavaScript 加载“install.php”,在脚本完成执行之前我不会取回所有内容(对吗?) - 使整个目标变得毫无意义。我以前见过这样做,但找不到具体的例子来说明它是如何完成的。

任何帮助表示赞赏!

【问题讨论】:

    标签: php javascript ajax


    【解决方案1】:

    我怀疑 Ajax 会做你想做的事——相反,你可能不得不更频繁地调用 ajax 获取。

    要在生成信息后立即刷新信息,您需要在输出信息后定期使用flush()

    我还在相关的 .htaccess 文件中添加了一行,以避免由于 GZipping 输出而导致的任何缓冲 (apache2)。

    SetEnvIf Request_URI "/url/dont/buffer/me.php" gzip=0
    

    在相关的PHP文件中:

    ini_set('output_buffering', false);
    ini_set('implicit_flush', 'true');
    

    以及对flush()的适当调用。这几乎涵盖了所有基础。

    【讨论】:

      【解决方案2】:

      我会将所有内容输出到一个文本文件,并通过调用 .txt 文件通过 AJAX 更新 DIV

      【讨论】:

      • 毛茸茸的;多个用户?然后你有多个文本文件。根据会话命名文本文件?多个标签呢?哦,废话,我只是被零除。
      • 啊,搞砸了。只需计时您的安装脚本并创建动画 GIF。对用户来说都是一样的。
      猜你喜欢
      • 1970-01-01
      • 2020-02-27
      • 1970-01-01
      • 1970-01-01
      • 2011-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多