PHP主動斷開與瀏覽器的連接
導語:曾經整理過一篇《關於PHP連接處理中set_time_limit()、connection_status()和ignore_user_abort()深入解析》,是講解瀏覽器客户端斷開時,服務器PHP腳本的處理。本站小編將講解一下服務器PHP腳本怎樣主動斷開與瀏覽器的連接,主要方法是使用http協議header中的Content-Length和Connection
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();
-
PHP編程常用技巧四則
PHP具有非常強大的功能,所有的CGI的功能PHP都能實現。下面就來和小編一起看看PHP編程常用技巧四則吧。1.配置PHP文件目錄作為服務器端解釋執行的腳本語言,PHP程序放置在某個服務器可以訪問的目錄下,一般可以通過修改Apache的進行配置,例如我們在該文件中的一句:Ali...
-
在PHP中使用隨機數的三個步驟
如何做一個隨機的出現的網頁,可是用rand()就是不行,聽説要初始化隨機數,可是怎麼初始化,請不吝賜教,謝謝!//第一步:初始化種子$seedarray=microtime();$seedstr=split("",$seedarray,5);$seed=$seedstr[0]*10000;//第二步:使用種子初始化隨機數發生器srand($seed);//...
-
作為程序員必知的16個最佳PHP庫
PHP是一種功能強大的web站點腳本語言,通過PHP,web網站開發者可以更容易地創建動態的引人入勝的web頁面。開發人員可以使用PHP代碼與一些網站模板和框架來提升功能和特性。然而,編寫PHP代碼是一個繁瑣又耗時的過程。為了縮短開發時間,開發人員可以用PHP庫替代編寫代...
-
tp搜索時首頁分頁和搜索頁保持條件分頁的方法
在做搜索查詢時突然發現在首頁用的`分頁代碼在搜索頁使用時出現錯誤,首頁分頁代碼(代碼中標註start與end部分為分頁代碼),下面是由本站小編為大家整理的Thinkphp搜索時首頁分頁和搜索頁保持條件分頁的方法,喜歡的可以收藏一下!瞭解更多詳情資訊,請關注應屆畢業生...