如果发出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. 总是等待任务完成是否是一种好习惯?