2013-07-17 61 views
2

爲什麼這個函數的最後一行需要這個工作?我不明白這裏發生了什麼事。它確實工作。PHP關閉HTTP連接然後繼續處理?

function close_connection() { 
    // if we're using sessions this stops them from hanging on other requests 
    session_write_close(); 
    // get the content length from the buffer (the whole point of the buffer) 
    header('Content-Length: 0'); 
    // close the connection 
    header('Connection: close'); 
    // flush the buffers to the screen 
    flush(); 

    // connection closing doesn't work without this. I don't know why 
    echo ' '; 
} 

回答

1

只要第一個字節輸出到瀏覽器,就會發送標題。
您也可以嘗試使用ob_end_flush();

+0

我在'ob_end_flush()'之前嘗試過。它沒有做任何事,所以我刪除了它。可能是因爲我的緩衝區完全空了? –

+0

您可以使用以下方式檢查: '$ obsize = ob_get_length();' 然後在您的頭中使用該輸出尺寸Content-Length: 'header(「Content-Length:$ obsize」);' – blowdoof

+0

刷新緩衝區而不發送任何內容? –