2010-02-17 22 views
1

我有一個關於mod_passenger和Singleton類的問題(rails 2.3.5和ruby 1.9.1)。mod_passenger,線程和單例類

在我的應用程序中,我有一個實現線程池(線程安全)的Singleton類。

此外還有控制器管理所有線程(殺死並啓動它們)。該控制器使用先前的單例類來對線程執行操作。

在本地,使用帶有config.cache_classes = true的WEBrick它的工作原理是正確的。在生產中,使用mod_passenger(也是config.cache_classes = true),它不起作用:線程不會被終止。但是,如果我使用控制檯(生產環境)中的單例類,則它工作正常。

可能是mod_passenger的問題?有小費嗎?

謝謝。

回答

1

這是因爲mod_passenger產生了多次應用程序,所以singleton類線程池在多個控制器調用之間不一致,因爲每個實例都有自己的線程池。

我解決了使用腳本/運行器運行單例類線程池的問題,並使用數據庫表與所有應用程序實例通信。我使用這張表來發送線程池必須完成的任務。

+0

你能分享你的知識如何使用腳本/跑步者? – Paul 2014-10-14 10:53:35