【问题标题】:How to deal with broken multipart uploads?如何处理损坏的分段上传?
【发布时间】:2013-03-04 09:13:28
【问题描述】:

我有一个 PHP 脚本,它从远程设备接收图像并将它们保存到数据库中。该脚本从 Apache 启动,首先接收定义上传内容的标头,然后接收上传图像的内容,所有这些都作为单个多部分传输。成功添加图像后,它会回复设备确认信息。

现在的问题是连接不是很可靠。有时传输超时。这不会是一个问题,因为如果设备没有收到确认,它会在一段时间后重新发送数据。除非传输中途中断,Apache 照常启动脚本,脚本愉快地将不完整的图像集保存到数据库中,并将它们的创建时间戳作为唯一键。然后远程设备重新发送数据,然后脚本正确接收数据,但由于唯一密钥已被损坏的数据占用,因此无法保存。

是否有一些可靠的方法可以从 PHP 脚本中判断它是在不完整的多部分传输时启动的,或者如果传输没有成功结束则阻止 Apache 启动它?

(我们无法真正更改从远程设备接收到的数据库结构或格式。)

【问题讨论】:

  • Except if the transmission is broken halfway through, Apache launches the script as usual 这听起来很奇怪。你有这些案例的日志数据吗?能不能暂时记录一下$_FILES数组,看看上传不完整时error变量设置了什么?

标签: php apache upload multipart


【解决方案1】:

检查您设备的应用程序代码是否有发送超时。也许连接太慢了,当达到时间限制时它会刹车。在这种情况下,尽管 Content-Length 标头不匹配,apache 服务器仍会运行带有部分接收数据的 php 脚本。

【讨论】:

  • 似乎是这样 - 当传输时间过长时,客户端会在超时时发送 FIN。现在,如果我能让 Apache 拒绝与 Content-Length 不匹配的数据,那就太好了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-08
  • 1970-01-01
  • 2020-06-18
  • 2016-02-07
相关资源
最近更新 更多