當前位置:才華齋>計算機>php語言>

PHP主動斷開與瀏覽器的連線

php語言 閱讀(1.41W)

導語:曾經整理過一篇《關於PHP連線處理中set_time_limit()、connection_status()和ignore_user_abort()深入解析》,是講解瀏覽器客戶端斷開時,服務器PHP指令碼的處理。本站小編將講解一下伺服器PHP指令碼怎樣主動斷開與瀏覽器的連線,主要方法是使用http協議header中的Content-Length和Connection

PHP主動斷開與瀏覽器的連線

Content-Length的`作用:瀏覽器接收到指定Content-Length大小的訊息實體後,則會斷開與伺服器的連線。

Connection的作用:瀏覽器接收到Connection的Close或Keep-Alive後,決定是關閉連線還是繼續使用當前的連線進下一次請求。

/**

* 自動斷開與瀏覽器的連線

* jiaofuyou

*/

echo '1234567890'; //向瀏覽器輸出的內容

{//斷開連線的程式碼

$size=ob_get_length();

header("Content-Length: $size"); //告訴瀏覽器資料長度,瀏覽器接收到此長度資料後就不再接收資料

header("Connection: Close"); //告訴瀏覽器關閉當前連線,即為短連線

ob_flush();

flush();

}

error_log(date("[Y-m-d H:i:s]")." > "."start" ."n", 3 , "/usr/local/apache2219/logs/php_log");

//斷開連線後的執行長時間操作

sleep(5);

echo 'test213';//瀏覽器接收不到了

error_log(date("[Y-m-d H:i:s]")." > "."end" ."n", 3 , "/usr/local/apache2219/logs/php_log");

//可以檢視錯誤日誌是否延遲5秒後執行.

?>

說明:

1、單獨使用Content-length實際上連線並未斷開,僅是瀏覽器停止接收資訊,Connection: Close才是真正的告訴瀏覽器關閉連線。

2、指定Content-Length 對於 file_get_contents 沒有任何意義;若想使用,請用curl。

如果想讓PHP不停的向瀏覽器輸出內容:

echo "1234567890"

ob_flush();

flush();

這樣是不會立刻輸出到瀏覽器的,可以這樣

echo "1234567890

"

//有換行時會立刻輸出到瀏覽器

ob_flush();

flush();

或者:

echo "1234567890"

print str_pad("",10000); //輸出足夠多的內容

ob_flush();

flush();