作者chaoms (小企鹅)
看板PHP
标题Re: [请益] post 接收页面做进度条
时间Sat Mar 29 15:01:25 2014
※ 引述《newvalentine (haha)》之铭言:
: 有办法在 post 接收页面做进度
: 读取条吗?
: Google 一下没有资料
: 还请各位大大解惑
: 感谢大家!
这个要看处理什麽东西来作吧~
大家说的部份是指时间很短暂~用gif骗骗使用者处理中就好
如果是处理时间很长~如三十秒还是一分钟以上~
可以将资料处理 POST 到 iframe内~
开始处理就将处理进度的 javascript 直接 flush 出来
javscript内容就是变更处理进度的显示
iframe处理时就是吐出处理多少进度的javascript
处理完毕就flush出来给client端
如:
// 资料处理99%的时候
echo "<script>
parent.document.getElementById('proc').style.width = '99px';
</script>";
ob_flush();
而送出页大概就是置放进度条来被变更
<div id=proc style='background-color:#99ffcc;'></div>
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 122.118.224.199
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/PHP/M.1396076493.A.965.html
1F:→ danny8376:这作法几乎不可行www 现实production环境几乎都有buffer 03/30 20:52
2F:→ chaoms:楼上请查flush 或 ob_flush的作用喔! 03/31 07:12
3F:→ danny8376:中间还有apache fastcgi之类这一堆呢 buffer可不只 03/31 09:30
4F:→ danny8376:有一层而已 更别说有的还有haproxy varnish一堆的 03/31 09:31
5F:→ danny8376:光是现在很常见的php-fpm就已经关不掉buffer行为了 03/31 09:36
6F:→ chaoms:噗…server push的应用不致於消失喔! 03/31 18:14
7F:→ danny8376:楼上... comet的做法早没啥人在用了好吗... 03/31 19:15
8F:→ danny8376:现在主流是long polling 不然直接上websocket了 03/31 19:15
9F:→ chaoms:噗~设计领域不该有非黑即白的观念~应用只有这种吗? 03/31 22:03
10F:→ chaoms:你说的主流是否十几年前就可以应用了? 03/31 22:10
11F:→ chaoms:SO..分享设计原理~只是多一种选择罗! 03/31 22:12
12F:→ danny8376:所以我也只说这在production上很容易死啊 03/31 22:31
13F:→ danny8376:尤其是虚拟主机 架构部分你想动也动不了的 03/31 22:31
14F:→ danny8376:而且当年不偏好buffer 因为当时网路慢 03/31 22:32
15F:→ danny8376:所以原则是能先送多少先送多少 03/31 22:32
16F:→ danny8376:不然使用者要好几秒才能载完一页 03/31 22:33