【发布时间】:2015-05-13 12:09:16
【问题描述】:
我编写了一个使用 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 循环中等待不再到达的数据,大拇指旋转。
看来我现在完全被困住了。有什么想法吗?
【问题讨论】:
标签: php upload put cancellation