如果發出http請求並且調用者放棄請求,它是否會完成?例如,一個異步JavaScript GET請求在數據庫中記錄橫幅點擊然後重定向。腳本是否需要等待響應?HTTP請求是否總是完成?
1
A
回答
1
你應該等待它是安全的。你永遠不知道服務器什麼時候會處理你的請求(儘管它通常在幾百毫秒或更少的時間內),所以你不知道是否超時,失敗,或者如果你打算收到除非您等待,否則不同的預期反應
2
客戶端不會向服務器發送任何通知來取消請求。
PHP不知道客戶端是否斷開連接,直到它嘗試向客戶端發送一些數據(例如,無緩衝的echo()
調用),所以如果腳本沒有向用戶返回任何數據,它將完全執行。如果確實返回數據,則可能會中途中止,但可以使用ignore_user_abort()
更改) 如果您使用的是其他環境,則必須查閱文檔。
2
對於大多數情況下,一旦請求被服務器接收到,如果客戶端停止監聽,它將不會停止處理。
但是,服務器在服務請求時可能總是失敗,所以假設它完成可能不是一個好主意。
3
您的要求有多重要?如果數據庫當時不可用,該怎麼辦?如果服務器端代碼引發異常怎麼辦?
對於非常關鍵的請求,您可能需要實現某種能夠保存請求數據的消息隊列,直到它可以被完全處理。如果您正在處理網格和雲,這會變得更加複雜(您不能將消息排列在單個節點上,因爲節點可能會發生硬件故障)。但是,這是一個極端的情況,你最終會得到專用的隊列服務器。
1
您不必等待響應以便請求到達服務器。服務器可以在處理請求時檢查是否有人正在監聽,但即使沒有人正在監聽響應,處理請求也會開始(當然,除非出現錯誤)。
如果要確保請求確實已處理完畢,則應等待響應,但不要求請求通過服務器。
相關問題
- 1. 檢查Web API請求是否完成
- 2. 如何使用請求npm模塊判斷http請求是否完成?
- 3. 等待HTTP請求完成
- 4. 每個成功的HTTP請求是否總是返回狀態碼200?
- 5. HTTP OPTIONS請求是否可以返回204或是否總是返回200?
- 6. Golang淨/ http請求身體總是空
- 7. 是請求(HTTP請求客戶端)是否同步?
- 8. 確定是否一個HTTP請求是HttpApplication.AuthenticateRequest SOAP請求
- 9. 當從客戶端調用HTTP請求時,是否可以將http請求/請求分成多個請求?
- 10. 200表示請求是否成功啓動或成功完成?
- 11. HTTP請求URL是否不是HTTP請求標頭的一部分?
- 12. getJSON請求總是不成功?
- 13. 我可以知道QNetworkAccessManager是否完成處理所有http請求?
- 14. 在線程內,JMeter HTTP請求/響應是否按順序完成?
- 15. PHP是否包含HTTP請求?
- 16. Joomla是否支持DELETE http請求
- 17. 相對URL是否創建HTTP請求?
- 18. 是否對外部http請求有害?
- 19. akka-http:流程完成請求
- 20. 檢查URL是否存在 - HTTP請求總是返回一個異常
- 21. iOS10 http請求成爲https請求,但有一些不是
- 22. 如何檢查排球請求隊列是否爲空?請求完成?
- 23. 此CSS是否會生成額外的HTTP請求?
- 24. JSP/Servlet如何識別HTTP請求是否來自ajax請求
- 25. 請求線程是否在http請求之間重用?
- 26. 如果recv和send匹配,mpi請求是否完成
- 27. Azure交換槽,當前處理請求是否完成?
- 28. 這個JS代碼是否等待AJAX請求完成?
- 29. 我可以檢查異步請求是否完成?
- 30. 總是等待任務完成是否是一種好習慣?