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