V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cnqncom
V2EX  ›  PHP

为啥我的 NGINX 就输出不下面这个进度条效果呢?

  •  
  •   cnqncom · 2017-10-12 16:07:02 +08:00 · 2990 次点击
    这是一个创建于 2602 天前的主题,其中的信息可能已经有所发展或是发生改变。
    <?php

    //防止执行超时
    set_time_limit(0);

    //清空并关闭输出缓冲区
    ob_end_clean();

    //某些浏览器要达到足够的长度才输出,所以填充空格
    echo str_repeat(" ", 1000);

    //输出进度条样式
    echo '<div style="width: 960px;margin: 0 auto;text-align:center;"><div style="border:1px solid #000;width:500px;margin: 0 auto;"><div id="progress_bar">loading...</div></div></div>';

    //需要循环操作的数据总数
    $data_total = 12;

    //进度条的总长度
    $width = '500';

    //百分比初始数值
    $progress = 0;

    //百分比数值的递增值
    $per_progress = number_format(100 / $data_total, 0);

    //进度条初始长度值
    $iwidth = 0;

    //进度条长度的递增值
    $per_width = $width / $data_total;

    //循环输出数据,这里可根据实际操作进行更换
    for($i = 1; $i <= $data_total; $i++)
    {
    $iwidth += $per_width;
    $progress += $per_progress;

    echo '<script type="text/javascript"><!--
    ','var progress_bar = document.getElementById("progress_bar");','progress_bar.style.background="#FFCC66";','progress_bar.style.width ="' . $iwidth . 'px";',"progress_bar.innerHTML = '{$progress}%';",'
    // --></script>';
    sleep(1); //根据实际情况是否需要
    flush();
    }

    //输出进度条最大值
    echo '<script type="text/javascript"><!--
    ',"progress_bar.innerHTML = '100%';",'
    // --></script>';
    flush();






    我的 PHP 版本 5.6,是直接一次性显示出来,而不是进度的形式逐步输出!
    3 条回复    2017-10-12 16:59:30 +08:00
    ToughGuy
        1
    ToughGuy  
       2017-10-12 16:14:56 +08:00
    恩 你的 NGINX?
    xiamingchong
        2
    xiamingchong  
       2017-10-12 16:37:01 +08:00
    需要把 nginx 的 buffer 关了,
    打开 nginx.conf,
    设置 proxy_buffering off;
    cnqncom
        3
    cnqncom  
    OP
       2017-10-12 16:59:30 +08:00
    @xiamingchong 谢谢你,尽管这样还是不行。

    后来我找到了方法:

    在输出前先输出一个 nginx 特定的 header:

    header('X-Accel-Buffering: no');
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3673 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 04:23 · PVG 12:23 · LAX 20:23 · JFK 23:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.