ruby-on-rails - 为什么在使用 send_file 时我的 ruby​​ 进程没有在我的 FastCGI 共享服务器上退出?

标签 ruby-on-rails ruby apache fastcgi

在我的本地机器上开发了一个很棒的应用程序之后,没有考虑它在我的主机上的表现,我遇到了一个可怕的问题。我正在通过 Rails 提供文件(.pdf 和 .zip)send_file这样我就可以记录统计信息。唯一的问题是,当同时下载两个(或更多)文件时,必须启动一个新的 ruby​​ dispatch.fcgi 进程来处理每个文件。我知道这可以通过使用 mod_xsendfile 来避免。 ,但不幸的是我的主机不支持那个 apache mod。所以这是奇怪的部分。这些进程正在按预期创建,但由于某种原因它们永远不会退出。作为测试,我从几台不同的计算机上同时下载了大约 10 个文件。大约创建了 10 个进程,但没有一个退出。甚至在他们调用后几分钟,甚至在下载完成很长时间后。

为什么这些不退出?除了切换到提供 mod_xsendfile 支持的真实主机之外,我还能做些什么来避免这个问题?

最佳答案

如果您不需要对您提供的文件进行访问控制,您总是可以尝试将文件放在/public 下的某处或 Rails 应用程序之外的其他一些 url。

当用户下载文件时,它可以将他们带到更新下载统计信息的 Controller 操作,然后使用元刷新标记或一些 javascript 将用户的浏览器重定向到文件实际存储的路径。这样,apache 将在没有 rails 的情况下处理文件传输……基本上 xsendfile 会做什么。

另一方面,如果这不仅仅是您正在进行的玩具项目,那么切换到另一台主机可能是值得研究的事情......此时 fastcgi 是一种相当过时的方式来为 Rails 应用程序提供服务.

关于ruby-on-rails - 为什么在使用 send_file 时我的 ruby​​ 进程没有在我的 FastCGI 共享服务器上退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1985137/

相关文章:

ruby-on-rails - 如何在 gmaps4rails 上配置其他属性?

ruby-on-rails - 使用 Devise 在 Rails 应用程序中有条件地注销

java - 如何使用 pdfbox 2.0.0 检测扫描文档中的 OCR?

ruby-on-rails - 解决 Rails 片段缓存中 memcached 缺少通配符过期问题

ruby-on-rails - (Rails) Assert_Select 的恼人警告

html - 将 image_tag 压缩为一个

ruby-on-rails - 无法向 Rails 4.2.6 中的 ActiveRecord 枚举添加前缀?

ruby - Cron 作业不起作用

php - 我如何使用 htaccess 强制重定向到安全域

apache - 将 www.domain.com/test.php 重写为 www.domain.com/test/