代码之家  ›  专栏  ›  技术社区  ›  Manos Dilaverakis

使用内容处理:并行附件发送文件

  •  0
  • Manos Dilaverakis  · 技术社区  · 15 年前

    我有一个PHP页面,它根据接收到的请求数据向浏览器发送一个文件。getfile.php?get=something发送文件A,getfile.php?get=somethingelse发送文件B,依此类推。 这是这样做的:

    header('Content-Disposition: attachment; filename='. urlencode($filename));
    readfile($fileURL);
    

    除了一次只能发送一个文件外,它还能工作。请求的任何其他文件都以线性方式发送。一个开始,另一个结束。

    如果用户在下载另一个文件时请求另一个文件,如何让它并行发送文件?

    2 回复  |  直到 15 年前
        1
  •  1
  •   T.J. Crowder    15 年前

    服务器 如果同一浏览器中有两个以上的连接,还将对连接进行排队。如果您使用的是会话,PHP可能会序列化会话中的请求(一次只执行一个活动请求),以最小化竞争条件(我不知道PHP是否做到了这一点;有些人是这样做的。)

    其中两个(服务器和PHP)由您控制;你对浏览器无能为力。

    有点OT,但您可以始终允许他们选择多个文件,然后将它们发送回动态创建的zip(或其他容器格式)。

        2
  •  0
  •   Manos Dilaverakis    15 年前

    在我完成会话之后和开始下载之前添加session\u write\u close()似乎解决了这个问题。