gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 16:39:35 24 4
gpt4 key购买 nike

在我的本地机器上开发了一个很棒的应用程序之后,没有考虑它在我的主机上的表现,我遇到了一个可怕的问题。我正在通过 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com