代码之家  ›  专栏  ›  技术社区  ›  Jonah Braun

支持HTTP 100继续使用PHP

  •  13
  • Jonah Braun  · 技术社区  · 16 年前

    我正在开发一个PHP webapp,它接受来自特定客户端的大型上传文件,并希望在使用HTTP/1.1 100继续上传文件之前接受或拒绝这些上传(基于各种标题和其他因素,而不仅仅是大小)。

    一些来自 HTTP/1.1 spec 8.2.3 :

    100(继续)状态(见第10.1.1节)的目的是允许正在发送请求正文的请求消息的客户端在客户端发送请求正文之前确定源服务器是否愿意接受请求(基于请求标头)。在某些情况下,如果服务器在不查看正文的情况下拒绝消息,则客户端发送正文可能不合适或效率极低。

    问题是,Apache在PHP开始处理之前,从客户端看到Expect:100 continue,返回100 continue并接受文件上传。。。然而,我需要PHP在Expect:100 continue之后立即开始处理。我不确定这是否可行,所以我有两个问题:

    1. 是否可以让PHP在Expect:100 continue之后立即开始处理?
    2. 如果不是,什么是好的替代方案?

    我目前正在考虑模拟100 continue,方法是指定客户端首先发送一个头部请求,其头部与帖子的头部相同。然后,webapp可以返回一个响应以继续发布帖子或返回一个错误代码。欢迎提出其他建议!

    2 回复  |  直到 16 年前
        1
  •  1
  •   Evert    9 年前

    不幸的是,我认为这是不可能的。如果这是一个真正的要求,我认为最好只是看看其他语言。我认为今天的异构环境比写这个问题时更常见,所以为什么不创建一个用其他语言编写的小型服务来处理上传呢。

    但是,PHP的工作方式是,只有当客户端发送整个请求时,脚本才会启动。

        2
  •  -6
  •   Daniel Ice    16 年前

    试图在HTTP级别上实现这一点似乎太难了。作为一名开发人员,重要的是不要对特定的解决方案挂断电话。问题是,在处理上传之前,您需要进行一系列检查。你所需要做的就是在上传之前放置一个符合条件的页面。如果他们通过了一系列检查并符合条件,此合格页面将仅向他们显示上传表单。这正是您想要做的,只有在PHP代码中才能做到。如果可能的话,HTTP 100东西总是需要大量额外的配置,从而为以后的支持带来麻烦。如果你在代码中这样做,那些在你(或几年后你自己)身后的人将能够清楚地理解应用程序在做什么。

    推荐文章