- 相關(guān)推薦
PHP主動(dòng)斷開與瀏覽器的連接
導(dǎo)語:曾經(jīng)整理過一篇《關(guān)于PHP連接處理中set_time_limit()、connection_status()和ignore_user_abort()深入解析》,是講解瀏覽器客戶端斷開時(shí),服務(wù)器PHP腳本的處理。百分網(wǎng)小編將講解一下服務(wù)器PHP腳本怎樣主動(dòng)斷開與瀏覽器的連接,主要方法是使用http協(xié)議header中的Content-Length和Connection
Content-Length的作用:瀏覽器接收到指定Content-Length大小的消息實(shí)體后,則會(huì)斷開與服務(wù)器的連接。
Connection的作用:瀏覽器接收到Connection的Close或Keep-Alive后,決定是關(guān)閉連接還是繼續(xù)使用當(dāng)前的連接進(jìn)下一次請(qǐng)求。
/**
* 自動(dòng)斷開與瀏覽器的連接
* jiaofuyou
*/
echo '1234567890'; //向?yàn)g覽器輸出的內(nèi)容
{//斷開連接的代碼
$size=ob_get_length();
header("Content-Length: $size"); //告訴瀏覽器數(shù)據(jù)長(zhǎng)度,瀏覽器接收到此長(zhǎng)度數(shù)據(jù)后就不再接收數(shù)據(jù)
header("Connection: Close"); //告訴瀏覽器關(guān)閉當(dāng)前連接,即為短連接
ob_flush();
flush();
}
error_log(date("[Y-m-d H:i:s]")." > "."start" ."n", 3 , "/usr/local/apache2219/logs/php_log");
//斷開連接后的執(zhí)行長(zhǎng)時(shí)間操作
sleep(5);
echo 'test213';//瀏覽器接收不到了
error_log(date("[Y-m-d H:i:s]")." > "."end" ."n", 3 , "/usr/local/apache2219/logs/php_log");
//可以查看錯(cuò)誤日志是否延遲5秒后執(zhí)行.
?>
說明:
1、單獨(dú)使用Content-length實(shí)際上連接并未斷開,僅是瀏覽器停止接收信息,Connection: Close才是真正的告訴瀏覽器關(guān)閉連接。
2、指定Content-Length 對(duì)于 file_get_contents 沒有任何意義;若想使用,請(qǐng)用curl。
如果想讓PHP不停的向?yàn)g覽器輸出內(nèi)容:
echo "1234567890"
ob_flush();
flush();
這樣是不會(huì)立刻輸出到瀏覽器的,可以這樣
echo "1234567890
"
//有換行時(shí)會(huì)立刻輸出到瀏覽器
ob_flush();
flush();
或者:
echo "1234567890"
print str_pad("",10000); //輸出足夠多的內(nèi)容
ob_flush();
flush();
【PHP主動(dòng)斷開與瀏覽器的連接】相關(guān)文章:
php正則去掉php注釋11-17
Office的斷開鏈接是什么03-29
PHP是做什么的 如何學(xué)習(xí)PHP03-02
PHP試題03-28
linux瀏覽器哪個(gè)好用02-25
瀏覽器怎么設(shè)置上網(wǎng)11-25
如何自學(xué)PHP03-18