如何使用PHP PUT检测中止的连接

如何使用PHP PUT检测中止的连接,php,upload,put,cancellation,Php,Upload,Put,Cancellation,我已经编写了一个PHP上传函数,它使用HTTP PUT,使用来自浏览器的XHR2调用。一切都很好,但现在我还需要检测用户是否已取消上传、关闭浏览器或网络连接是否已断开 我很难做到这一点,直到我开始认为这根本不可能,所以任何见解都将不胜感激 我上传代码的核心实际上没有什么特别之处,大致如下所示: $putdata = fopen("php://input", "r"); $fp = fopen($tempPath, "a"); while ($data = fread($putdata, 1024

我已经编写了一个PHP上传函数,它使用HTTP PUT,使用来自浏览器的XHR2调用。一切都很好,但现在我还需要检测用户是否已取消上传、关闭浏览器或网络连接是否已断开

我很难做到这一点,直到我开始认为这根本不可能,所以任何见解都将不胜感激

我上传代码的核心实际上没有什么特别之处,大致如下所示:

$putdata = fopen("php://input", "r");
$fp = fopen($tempPath, "a");
while ($data = fread($putdata, 1024)) { fwrite($fp, $data); } 
fclose($fp);
fclose($putdata);
第一个想法是简单地使用
register\u shutdown\u函数
,但该函数直到大约五分钟后才被调用,这太晚了。另外,
连接\u中止
不起作用。在读取数据时,我真的无法向客户机输出任何内容,甚至连标题或之后的响应都无法输出,并出现“headers ready sent”(标题已发送)错误。现在,在我看来,脚本只是在while循环中等待不再到达的数据,只是在玩弄拇指


看来我现在完全被卡住了。有什么想法吗?

你应该向或询问。

现在已经试了好几个小时了。正如我在问题中所说的,我不能使用
连接\u aborted
,因为我不能输出任何东西,甚至连头都不能在不中断剩余脚本的情况下接收数据时发送到客户端。