首页
注册
登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请
登录
V2EX
›
PHP
为啥我的 NGINX 就输出不下面这个进度条效果呢?
cnqncom
·
2017-10-12 16:07:02 +08:00
· 2966 次点击
这是一个创建于 2565 天前的主题,其中的信息可能已经有所发展或是发生改变。
<?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,是直接一次性显示出来,而不是进度的形式逐步输出!
div
width
data_total
进度
3 条回复
•
2017-10-12 16:59:30 +08:00
1
ToughGuy
2017-10-12 16:14:56 +08:00
恩 你的 NGINX?
2
xiamingchong
2017-10-12 16:37:01 +08:00
需要把 nginx 的 buffer 关了,
打开 nginx.conf,
设置 proxy_buffering off;
3
cnqncom
OP
2017-10-12 16:59:30 +08:00
@
xiamingchong
谢谢你,尽管这样还是不行。
后来我找到了方法:
在输出前先输出一个 nginx 特定的 header:
header('X-Accel-Buffering: no');
关于
·
帮助文档
·
博客
·
API
·
FAQ
·
实用小工具
·
895 人在线
最高记录 6679
·
Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 25ms ·
UTC 22:04
·
PVG 06:04
·
LAX 15:04
·
JFK 18:04
Developed with
CodeLauncher
♥ Do have faith in what you're doing.