Answers:
好吧,这完全取决于服务器的功能。通常,在尝试发送之前,它不会“检测”终止的请求。届时,脚本将从Web服务器获取一条user_abort消息(在php中,您可以通过告诉它忽略用户中止的操作ignore_user_abort(true);
)。如果不尝试向客户端发送数据,服务器将无法得知请求已中止。
当它尝试将请求发送到关闭的TCP连接时,发生的情况完全取决于服务器软件。Apache的工作方式如下:如果正在处理动态脚本时,发送的数据仍处于静止状态,它将告诉脚本有关异常终止的信息,并让其处理所需的操作(默认情况下,PHP终止)。如果脚本完成,或者它是一个静态文件请求,它将忽略已关闭的连接并返回。
我认为是电类的东西。收费。当某些连接终止时,正在发送的数据是一笔费用,由于没有用于该特定传输的监听套接字,因此它只是消失了。仅当有套接字时,才会发生一些通信。
例:
我们http://localhost
为apache2 httpd 打了。假设它没有运行。浏览器打开一个套接字,向端口80(默认)发送一条消息,并查看是否有任何响应。由于没有监听程序,因为apache没有运行,所以此ping请求根本不会得到任何响应。至少200 ok或任何形式的握手。那我们的Ping会怎样?http发送一些信息:例如GET http://localhost 80
...等。这行会发生什么?GET http://localhost 80
?它只是充电而消失。
这只是我的信念,为了更加清晰起见,我们应该首先参考TCP。只有这样,我们才能了解Internet协议和随后的http的行为。最终,对于过早终止的http请求似乎没有具体定义。这就是为什么将其称为过早终止的原因。