问题标签 [x-sendfile]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
35245 浏览

php - 在 Apache/PHP 中使用 X-Sendfile

我似乎找不到太多关于 X-Sendfile 的文档或 PHP 的示例代码(有一些 rails 代码)。

任何人以前使用过它并且介意提供一段快速的代码和简短的描述吗?

0 投票
3 回答
1663 浏览

ruby-on-rails - Rails 中的 x_sendfile 问题

我对 John Guenin 的 x_sendfile ( http://john.guen.in/past/2007/4/17/send_files_faster_with_xsendfile/ ) 有一些问题。

在对 PDF 文件的下载进行编码时,我使用以下代码:

但我只下载了 1 个字节。如果文件名不是绝对的,通常会发生这种情况(因此添加了#{Rails.root}。我还检查了该文件是否具有必要的权限。这在本地主机和我的产品站点上都失败了。

任何想法我做错了什么?

TIA,

乌尔夫

0 投票
1 回答
7092 浏览

ruby-on-rails - 通过 Rails 2.3 使用 x-sendfile 通过 Nginx 提供大文件

假设我有一个 Rails 2.3.2 应用程序,前面是 nginx,由 mongrel 提供服务,我需要通过 Rails 提供一个大型静态文件(以控制对它的访问)。我希望 Rails 应用程序将文件传输委托给 nginx,以避免阻塞 mongrel 实例。

现有信息似乎相互矛盾且不完整。这篇文章展示了如何用 Apache 来做,并暗示它也可以用 ngninx 来做——但没有例子。这篇文章这篇文章展示了如何使用 Rails 2.3 显然不需要的插件来做到这一点。这篇文章表明,也许 nginx 不支持 x-sendfile。

对于 Rails 现在可以自己做的事情,我宁愿不要乱用插件。

有没有人在不使用插件和 Rails 2.3/nginx/mongrel 的情况下获得类似 x-sendfile 的行为?如果不是,那么让它与插件(和/或猴子补丁)和 Rails 2.3/nginx/mongrel 一起工作的最佳文档是什么?

0 投票
1 回答
113 浏览

php - 连接断开

我在 CentOS 5.2 版上使用 lighttp 1.5。该网站是一个免费的图片网站,允许用户下载文件。每个文件大约 3-6MB。下载脚本是一个看起来像这样的 php 脚本。

问题的描述是我一次下载 5 或 6 个不同的文件。其中一个文件以 1/2 的速度通过,将开始每秒丢失 k/s,直到它达到“以每秒 1k 的速度下载”,然后它就退出了。图像永远不会完全到达。我重试并下载图像,即使需要 5 分钟,它也能正常下载。很多用户都在报告这个问题,我在高峰时间注意到了这个问题。Ping 显示非常低的丢包率。任何人都知道为什么连接会断开?是轻的还是网络的?任何帮助将不胜感激。

0 投票
2 回答
1078 浏览

python - Apache2 上的 X-Sendfile 和非常大的文件

任何超过 4GB 的文件大小都不适用于 Apache2 的 mod_xsendfile(因为它将内容长度设置为很长)。

我愿意重写它以支持这一点;但是,我找不到有关如何将 apache api 的内容长度设置为大于 long 并因此通过 Apache 提供大文件的文档。我知道 Apache 可以做到这一点,因为它是使用大文件支持编译的,并且通过目录索引提供文件而没有任何问题。

我需要使用 Apache,因为我正在使用 WSGI。由于各种我不想进入的原因,我不想使用 FastCGI 或关闭 Apache2。

谢谢。

0 投票
1 回答
1543 浏览

ruby-on-rails - 使用 Rails、Nginx(使用 x-accel-redirect)和 Apache(x-sendfile)下载大文件时出现问题

当大小超过 1gb 时,我们在下载时遇到了很大的问题。

我们在 Amazon EC2 2gb 上使用 Rails 2.3.5、passenger 2.2.9 和 2gb Ram 和 Fedora 10。

文件存储在/mnt/files,项目在/mnt/www/project

我们尝试使用 Nginx 和 x-accel-redirect 以及 Apache 使用 x-sendfile 发送文件。

我们只能下载1.09gb而不是 1.54gb!!

我们可以毫无问题地下载大小小于1gb的文件

如果我们在 rails 公共目录中链接相同的文件(未损坏),我们可以毫无问题地下载。

X-Accel-Redirect 或 X-SendFile 配置正确,经过大量测试和检查。

所以:

  1. Nginx 与 x-accel-redirect [失败]
  2. Apache 与 x-send-file [失败]
  3. 在 nginx 或 apache 上发送没有 x-accel-redirect 或 x-sendfile 的文件 [失败]
  4. 公开链接文件并直接下载[作品]

有什么建议吗?

谢谢!!!

0 投票
2 回答
336 浏览

ruby - 使用 XSendFile 上传模拟?

有没有办法使用类似于 x-sendfile 的东西来上传文件,例如将特定的流/参数从请求保存到文件,而不将其完全放入内存?(特别是 apache2 和 ruby​​ fcgi)

0 投票
3 回答
6541 浏览

apache2 - 用于 Win x64 的 mod_xsendfile?

我正在尝试在 Windows (7) x64(使用 Apache 2.2)上安装 mod_xsendfile Apache 模块——是的,我从一开始就注定要失败,我知道 :-)。显然有:

a) mod_xsendfile 没有 Win x64 二进制文件,只有模块网站上的 Win32 二进制文件

b) ApacheLounge没有用于 apxs 的 Win x64 二进制文件

我已经尝试了通常的方法LoadModule xsendfile_module modules/mod_xsendfile.so,但出现了半明显的错误(httpd: Syntax error on line 127 of C:/Apache/conf/httpd.conf: Cannot load C:/Apache/modules/mod_xsendfile.so into server: The specified module could not be found.),它与 Win x64 不兼容。

问题仍然存在——如何为 x64 构建模块,这是否可能?我有 VS 和任何可能需要的工具。

我只是想看看这是否会提高我受 Rails 保护的附件下载速度 - 目前对于简单图像的速度非常可怕。

先感谢您 !

0 投票
8 回答
58280 浏览

php - 使用 PHP 提供文件的最快方法

我正在尝试组合一个函数来接收文件路径,识别它是什么,设置适当的标题,并像 Apache 一样为它提供服务。

我这样做的原因是因为我需要在提供文件之前使用 PHP 来处理有关请求的一些信息。

速度至关重要

virtual() 不是一个选项

必须在用户无法控制 Web 服务器(Apache/nginx 等)的共享主机环境中工作

这是我到目前为止所得到的:

0 投票
1 回答
1171 浏览

ruby-on-rails - MongoDB 的 GridFS、Rails 3、X-Sendfile 和 ACL,HOW-TO?

我有一个 Rails 3 项目,可以进行文件上传/下载,具有访问权限(用户有很多文件,只能读/写他自己的文件)。

如果我将文件存储在经典文件系统上,我可以在我的 rails 应用程序中检查对文件的访问权限,然后使用 X-Sendfile 标头重定向到文件(如果用户有权访问)。这样,用户永远无法在未经许可的情况下访问文件,并且下载速度很快。

  1. 我可以像 X-Sendfile 一样快速地从 GridFS 下载文件,并省去通过 rails/rack 管道的麻烦吗?

  2. 将它们通过导轨/机架管道会非常慢吗?

  3. 我可以像 X-Sendfile 一样快速地从 GridFS 下载文件,并且省去通过导轨/机架管道它们的麻烦,并且还具有强制访问权限的能力吗?