在ignore_user_abort()的函数文档的注释中提到,如果没有向客户端发送数据,PHP无法检测到用户终止请求。这对于
connection_status()
函数也是正确的。不幸的是,在使用输出缓冲的页面上(我不能轻易更改),我需要检测用户中止(可以取消的ajax请求)。
除了使用connection_status()
函数之外,是否有其他检测用户中止的方法?或者有没有特定的方法使该函数返回正确的值?实际上,PHP应该知道请求已被中止,因为从客户端接收到FIN
包。
我已经尝试过分析php://input
,php://output
,php://stdin
和php://stdout
的流元数据,在阻塞和非阻塞方式下读写数据以及连接中断前后,但这并没有提供任何有用的状态变化。
register_shutdown_function()
无法帮助。 - soulmerge