Linux
Apache POST 數據臨時儲存
我一直在尋找高低,我似乎無法找到它。
當 apache 在 body 欄位中收到帶有一些數據的 POST / HTTP/1.1 時,該數據是儲存在記憶體中還是文件中?從我已經能夠測試它不在記憶體中。
這個問題的答案是否會根據數據的 MIME 類型而改變?如果是這樣,那麼文件上傳( multipart/* )去哪裡?
我知道這樣的數據作為 cgi 的 STDIN 傳遞到目標文件,並且 THOSE 系統的答案取決於那裡的特定程序。例如 python 製作臨時文件。這不是我要問的問題。我特別詢問數據保存在哪裡,在伺服器在套接字中接收它和在 STDIN 傳遞它之間。
感謝您的考慮!
對於我使用過的伺服器,應用程序負責檢索發布數據。HTTP 協議在標頭和日期之間提供了清晰的界限。伺服器將處理標頭並將套接字移交給應用程序。在生成應用程序以服務請求的地方,套接字是 STDIN。它將是通過讀取 STDIN 從套接字中檢索數據的應用程序。
可以在從客戶端接收到所有數據之前啟動應用程序。它應該處理客戶端在收到所有數據之前關閉連接的情況。當傳輸的數據很大時,如果將完整數據讀入應用程序記憶體,可能會出現問題。將文件部分讀入文件通常會更好。這將是應用程序的責任。
如果 post 數據小於 TCP 視窗大小,則可能在應用程序開始之前已接收到數據。數據將儲存在網路堆棧的緩衝區中。