如何检测与PHP PUT的中止连接

时间:2015-05-13 12:09:17

标签: php upload put cancellation

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

我很难实现这一目标,直到我开始认为它根本不可能,所以任何见解都会非常感激!

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

$putdata = fopen("php://input", "r");
$fp = fopen($tempPath, "a");
while ($data = fread($putdata, 1024)) { fwrite($fp, $data); } 
fclose($fp);
fclose($putdata);

首先想到的是简单地使用register_shutdown_function,但直到大约五分钟之后才会调用该函数,这是迟到的。 connection_aborted也不起作用。我真的无法在读取数据时向客户端输出任何内容,甚至连标题或我的响应都没有输出“已发送标题”错误。现在,在我看来,脚本只是在while循环中等待不再到达的数据,翻转拇指。

所以看来我现在完全陷入了困境。有什么想法吗?

1 个答案:

答案 0 :(得分:0)