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

來源:互聯網
上載者:User

標籤:content-length   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後,決定是關閉串連還是繼續使用當前的串連進下一次請求。

<?php   /**    * 自動斷開與瀏覽器的串連    * 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();


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.