【问题标题】:PHP Download script with multiple connections具有多个连接的 PHP 下载脚本
【发布时间】:2023-03-20 08:43:02
【问题描述】:

我有一个供特定用户下载文件的 php 代码 我将文件的内容存储在数据库中(使用 blob 类型)。

<?php
//do stuffs to validate user
//do stuffs get the content from database;
//$r=mysql_fetch_object("$query");
header("Content-Type: $r->type");
header("Content-Disposition: attachment; filename=\"$r->name\"");
echo $r->content;
?>

在大文件的情况下,文件下载需要很长时间。 如何改进代码? 多连接时下载速度会提高吗?

【问题讨论】:

  • 详细信息。如果您需要帮助,请给他们。你看到什么速度?大有多大?通过什么样的连接?等
  • 不能真正评论加快速度,但指定 Content-Length 标头将允许接收用户获得状态栏和预计到达时间(可能感觉更快)。

标签: php database download blob


【解决方案1】:

假设没有人为限制连接,HTTP 传输将尽可能多地占用网络管道。

一旦连接开始受到限制(例如,在像 Rapidshare 这样的文件下载网站上,“免费”用户的带宽有限),那么使用并行连接可能会提高速度。例如单个流被限制为 50k/s,因此打开 2 个流将达到 100k/s 的有效速度。

但是你将不得不支持远程下载。您的脚本从头到尾发送整个文件。所以用户会下载整个文件两次。

【讨论】:

    【解决方案2】:

    您可能无法做太多事情来加快这一特定过程。

    服务器和客户端带宽是硬性限制。通过 PHP 流式传输文件会导致一些额外的开销,但鉴于数据来自数据库,也没有直接的改进方法。

    迁移到速度更快、带宽更大的服务器可能会有所帮助,但也可能无济于事。如果客户端的连接速度很慢,你也无能为力。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-04
      • 1970-01-01
      • 2014-10-27
      • 2019-12-28
      • 1970-01-01
      • 1970-01-01
      • 2015-01-20
      • 1970-01-01
      相关资源
      最近更新 更多