激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - PHP教程 - PHP flush 函數(shù)使用注意事項(xiàng)

PHP flush 函數(shù)使用注意事項(xiàng)

2021-02-24 16:11PHP教程網(wǎng) PHP教程

ob_flush/flush在手冊中的描述, 都是刷新輸出緩沖區(qū), 并且還需要配套使用, 所以會(huì)導(dǎo)致很多人迷惑…其實(shí), 他們倆的操作對(duì)象不同, 有些情況下, flush根本不做什么事情

ob_*系列函數(shù), 是操作PHP本身的輸出緩沖區(qū).

所以, ob_flush是刷新PHP自身的緩沖區(qū).

而flush, 嚴(yán)格來講, 這個(gè)只有在PHP做為apache的Module(handler或者filter)安裝的時(shí)候, 才有實(shí)際作用.
它是刷新WebServer(可以認(rèn)為特指apache)的緩沖區(qū).

在apache module的sapi下, flush會(huì)通過調(diào)用sapi_module的flush成員函數(shù)指針,
間接的調(diào)用apache的api: ap_rflush刷新apache的輸出緩沖區(qū), 當(dāng)然手冊中也說了, 有一些apache的其他模塊,
可能會(huì)改變這個(gè)動(dòng)作的結(jié)果..

有些Apache的模塊,比如mod_gzip,可能自己進(jìn)行輸出緩存,這將導(dǎo)致flush()函數(shù)產(chǎn)生的結(jié)果不會(huì)立即被發(fā)送到客戶端瀏覽器。

甚至瀏覽器也會(huì)在顯示之前,緩存接收到的內(nèi)容。例如 Netscape瀏覽器會(huì)在接受到換行或 html標(biāo)記的開頭之前緩存內(nèi)容,并且在接受到 標(biāo)記之前,不會(huì)顯示出整個(gè)表格。

一些版本的 Microsoft Internet Explorer
只有當(dāng)接受到的256個(gè)字節(jié)以后才開始顯示該頁面,所以必須發(fā)送一些額外的空格來讓這些瀏覽器顯示頁面內(nèi)容。

所以, 正確使用倆者的順序是. 先ob_flush, 然后flush,

當(dāng)然, 在其他sapi下, 不調(diào)用flush也可以, 只不過為了保證你代碼的可移植性, 建議配套使用.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
// set_time_limit(0);
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
// ob_end_flush();
// ini_set('output_buffering', 0);
// ini_set('implicit_flush', 1);
if (ob_get_level() == 0) ob_start();
echo str_repeat(' ' ,4096);
$long = 60;
while($long > 0)
{
$time = date('r');
echo "data: The server time is: {$time}\n\n";
ob_flush();
flush();//break;
sleep(1);
$long --;
}
// var source=new EventSource("http://localhost:18000/sse.php");source.onmessage=function(event){console.info(event.data)};
?>

如果要在 nginx + fpm + php 上支持需要加一個(gè)響應(yīng)頭

header('X-Accel-Buffering: no');
This eliminates both proxy_buffering and (if you have nginx >= 1.5.6), fastcgi_buffering. The fastcgi bit is crucial if you're using php-fpm. The header is also far more convenient to do on an as-needed basis.
Docs on X-Accel-Buffering http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_buffering ;

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
// set_time_limit(0);
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
header('X-Accel-Buffering: no');
 
// ob_end_flush();
// ini_set('output_buffering', 0);
// ini_set('implicit_flush', 1);
 
// if (ob_get_level() == 0) ob_start();
// echo str_repeat(' ' ,4096);
 
$long = 60;
while($long > 0)
{
    $time = date('r');
    echo "data: The server time is: {$time}\n\n";
    ob_flush();
    
    flush();//break;
    sleep(1);
    $long --;
}
// var source=new EventSource("http://localhost:18000/sse.php");source.onmessage=function(event){console.info(event.data)};
?>

 

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 欧美日韩国产一区二区三区在线观看 | 视频一区二区在线观看 | 国产精品爱久久久久久久 | 精品一区二区三区免费毛片爱 | 欧美特黄一级高清免费的香蕉 | 福利在线影院 | 久久久久久久久浪潮精品 | 高清国产午夜精品久久久久久 | 中国毛片在线观看 | av电影网站在线 | 国产精品一区二区三区在线 | 一级在线观看视频 | 久久久久国产成人精品亚洲午夜 | 成人艳情一二三区 | 深夜精品福利 | 成年人黄色免费电影 | 午夜视频久久久 | 羞羞视频免费视频欧美 | 免费黄色在线 | 日韩视频区 | 日本中文字幕网址 | 免费在线观看成年人视频 | 一区二区三区视频在线观看 | 日日噜噜夜夜爽 | 欧美精品一区二区三区在线播放 | 欧美成在线视频 | 精品国产乱码久久久久久预案 | www.91pron| 色就操 | 午夜免费网| 亚洲免费在线视频 | 亚洲aⅴ免费在线观看 | 成年免费看 | 久产久精品 | 成人做爰高潮片免费视频韩国 | 麻豆传传媒久久久爱 | 国产精品wwww | 欧美一级精品片在线看 | 国产精品免费久久久久 | av在线更新 | 销魂美女一区二区 |