2009-12-31 28 views
1

在我的本地機器上開發了一個很棒的應用程序,但沒有考慮它在主機上的性能,我遇到了一個可怕的問題。我正在通過導軌send_file提供文件(.pdf & .zip),以便我可以記錄統計信息。唯一的問題是,當同時下載兩個(或更多)文件時,必須啓動一個新的ruby dispatch.fcgi進程來處理每個文件。我明白這可以通過使用mod_xsendfile來避免,但不幸的是我的主機不支持apache mod。所以這是奇怪的部分。這些流程正在按照預期創建,但由於某種原因,它們從未退出。作爲一項測試,我從兩臺不同的電腦同時下載了大約10個文件。大約創建了10個進程,但沒有任何進程退出。甚至在其調用之後甚至在下載已經很長時間之後。使用send_file時,爲什麼我的Ruby進程不能在我的FastCGI共享服務器上退出?

爲什麼這些不存在?除了切換到爲mod_xsendfile提供支持的真實主機之外,我能做些什麼來避免這個問題?

回答

1

如果您不需要對提供的文件進行訪問控制,則可以嘗試將文件放置在/ public或rails應用程序之外的其他某個url下。

當用戶去下載一個文件時,它可能會將它們帶到更新下載統計信息的控制器操作,然後使用元刷新標記或一點javascript將用戶瀏覽器重定向到實際存儲文件的路徑。這樣,apache將處理沒有rails的文件傳輸......實質上是xsendfile會做什麼。

在另一方面,切換到另一臺主機可能是一些值得研究的,如果這是任何比你工作在一個玩具項目更多... FastCGI的是要服務於這一個Rails應用程序相當陳舊的方式點。

+0

+1「fastcgi已經過時了」。 – 2011-03-01 22:57:30

相關問題