首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >每个用户的下载-最大连接?

每个用户的下载-最大连接?
EN

Stack Overflow用户
提问于 2012-10-15 18:53:32
回答 1查看 1.2K关注 0票数 7

我有一个php脚本,它允许用户通过下载简历下载大型文件。

这很好,但我限制了使用php-代码的下载速度,每次连接的下载速度为200 to /s。

因此,Mozillas下载管理器只进行一次连接,速度约为200 or /s,而免费下载管理器或JDownloader只需2到4个连接,则下载速度为(200 or /s*2或4) = 400至800 or/s。

如何才能阻止这种情况,并允许每个用户只能有一个连接下载这个文件?

EN

回答 1

Stack Overflow用户

发布于 2012-10-15 19:34:24

A.我认为你的第一件事就是禁用Content-Range

14.16内容-范围

内容范围实体-标头与部分实体体一起发送,以指定在完整实体主体中应用部分主体的位置。范围单位的定义见第3.12节。

由于范围的关系,下载管理器可以在两个或多个连接中下载一个罚款。如果禁用此功能,则无法在单个文件上创建download resumemultiple connections。他们会从一开始就对文件提出每一个请求。

示例

代码语言:javascript
运行
复制
LoadModule headers_module modules/mod_headers.so 
Header set Accept-Ranges none 
RequestHeader unset Range

您还应该看看14.35.1字节范围

B。介绍下载会话。

您可以为每个下载生成一个uniqid id,并通过PHP页面提供它。如果下载仍处于活动状态,或在您仅存在之前已被请求,则页

示例

代码语言:javascript
运行
复制
$realFile = "test.pdf";
$fakeFile = uniqid("file");

$uniqid = isset($_REQUEST['id']) ? $_REQUEST['id'] : null;
if (empty($uniqid) || strlen($uniqid) < 20 || !ctype_xdigit($uniqid)) {
    die("Die! Die! Die! Stolen URL");
}
$memcache = new \Memcache();
$memcache->connect('localhost', 11211);

$runtime = (int) $memcache->get($uniqid);

if ($runtime) {
    die("Die! Die! Die! You Multiple Down loader");
} else {
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT\n");
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    header("Content-Transfer-Encoding: binary");
    header("Content-disposition: attachment; filename=$fakeFile.pdf"); //
    header('Content-type: application/pdf');
    header("Content-length: " . filesize($realFile));
    readfile($realFile);
    $memcache->set($uniqid, 1);
}

简单客户端

代码语言:javascript
运行
复制
$url = "a.php?id=" . bin2hex(mcrypt_create_iv(30, MCRYPT_DEV_URANDOM));
printf("<a href='%s'>Download Here</a>",$url);

它将输出类似于

代码语言:javascript
运行
复制
<a href='a.php?id=aed621be9d43b0349fcc0b942e84216bf5cd34bcae9b0e33b9d913cccd6e'>Download Here</a>

您还需要将每个id映射到特定的文件..。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12902129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档