php如何判断一个链接是否被client关闭了?

目前遇到一个问题,有一个记录日志的功能,在fastcgi_finish_request之后执行

有一种情况是 如果在浏览器不断刷新页面,结果是每次都会记录下来,但逻辑上需要是除了最后一次刷新的,前几次刷新的请求都不应该被记录

那么,如何判断一个链接是不是被client端主动关闭的?

就像这种:
图片描述

阅读 3.2k
2 个回答

连续不断的刷新会导致浏览器取消掉前面的HTTP请求。
PHP有个 connection_status() 函数可以用来判断当前HTTP请求的状态。
被取消掉的HTTP请求的状态应该是异常状态。
你可以根据这个来判断个试试。

注意keep-alive可能影响这个函数的返回值。建议关闭keep-alive功能。

感觉像个伪需求。。。
如果是你说的那种短时间内多次请求的,那应该是再你记录的时候进行去重处理,而不是在请求这边做处理
还有就是php是无法感知连接是否断开的,只有发送数据的时候才能感知。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题