【问题标题】:How to detect an aborted connection with PHP PUT如何使用 PHP PUT 检测中止的连接
【发布时间】: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


    【解决方案1】:

    【讨论】:

    • 已经尝试了所有这些东西几个小时。正如我在问题中所说,我不能使用connection_aborted,因为我不能输出任何东西——甚至不能输出标题! - 在不破坏剩余脚本的情况下接收数据时发送给客户端。
    猜你喜欢
    • 1970-01-01
    • 2013-05-23
    • 2013-02-13
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 2014-09-29
    相关资源
    最近更新 更多