前端了解下后端,学了些 php,如下代码:
<?php
echo "钱钱钱钱";
sleep(10);
echo '啊啊啊啊啊';
?>
它不是先输出钱,而是延迟 10 秒后,钱和啊一起输出。
py 它就是先输出钱,延时后再输出啊
所以各位巨大有什么解决办法吗
1
hahasong 2019 年 11 月 24 日 via iPhone
前端你不了解 http 吗,想实现你的要求得在命令行下执行
|
2
815979670 2019 年 11 月 24 日 via Android
cli 模式不是这样的
|
3
also24 2019 年 11 月 24 日
缓冲区的原因,强制 flush 可解
|
4
optional 2019 年 11 月 24 日 via iPhone
可以 flush 的
|
5
dobelee 2019 年 11 月 24 日 via iPhone
请先学习一下 http。。。
|
6
nvkou 2019 年 11 月 24 日 via Android
楼上说明了。php-cli 也是有的,之前试过用来做 ws 服务器
|
7
otakustay 2019 年 11 月 24 日
不是,这和 HTTP 啥关系,HTTP 哪里规定了要一起输出的,楼上几位让楼主学 HTTP 的是几个意思,学歪吗?
|
8
holdmycosmo 2019 年 11 月 24 日
http 还能一次请求,给俩响应?你请求一次,还能先返回'钱钱钱钱',然后等 10 秒,再返回'啊啊啊啊啊'?
|
9
Trim21 2019 年 11 月 24 日 via Android
这跟 http 有啥关系,http 里面一个请求也可以先返回一部分,再等十秒再返回另一部分啊,不关闭链接 body 分两次写不就行了吗。
php 能不能做到是另一回事,可 http 又不管你服务器是边渲染边返回还是渲染完了才开始响应。 |
10
lysS OP |
11
lysS OP 这跟 HTTP 好像确实没关系,因为是这跟 HTTP 好像确实没关系,因为是一次请求
|
12
dorentus 2019 年 11 月 24 日 via iPhone
@worldtongfb 当然可以的
|
13
CEBBCAT 2019 年 11 月 24 日 via Android
设置响应头为流模式应该可解
|
14
python 2019 年 11 月 24 日 via Android
想一下下载文件,就知跟 HTTP 没关系。
|
15
yEhwG10ZJa83067x 2019 年 11 月 24 日
|
16
yEhwG10ZJa83067x 2019 年 11 月 24 日
|
17
5200 2019 年 11 月 25 日
```
//header('X-Accel-Buffering: no'); if (ob_get_level() == 0) ob_start(); for ($i = 0; $i<30; $i++){ echo "<br> Line to show."; echo str_pad('',4096)."\n"; echo date('Y-m-d H:i:s')."\n"; ob_flush(); flush(); sleep(1); } echo "Done."; ob_end_flush(); ```  如果是用 Apache,可以直接每秒输出一条记录 。 如果是 nginx 作为 web 服务器时,就需要加上 header('X-Accel-Buffering: no'); |
19
otakustay 2019 年 11 月 25 日
@julyclyde 这是对的,但问题是 http 很容易选 chunked 模式啊……即使 PHP 不是 chunk,前面的 nginx 可能也给你 chunk 掉了
|
20
lysS OP |