我需要將警報發送到使用RoR編寫的基於Web的監視系統。蠻力解決方案是經常用javascript來輪詢輕量級控制器。當然,缺點是爲了在警報上獲得緊急響應時間,我必須非常頻繁地進行輪詢(每5秒鐘)。來自Rails應用程序的快速AJAX響應
我想到的一個想法是讓AJAX發起的輪詢線程在服務器端休眠,直到警報到達服務器。然後,服務器將喚醒睡眠線程,並獲得將立即顯示給Web客戶端的響應。這將允許我將輪詢間隔降低到每30秒或每分鐘一次,同時縮短提醒用戶的時間。
我沒有指望的一件事是,mongrel/rails沒有按照我的預期爲每個Web請求啓動一個線程。這意味着其他傳入的Web請求會阻塞,直到第一個線程的睡眠超時。
我試着撥弄「config.threadsafe!」在我的配置中,但似乎沒有將行爲更改爲每個請求模型的線程。另外,它似乎與config.threadsafe運行!是一個冒險的提議,可能需要對我現有的應用程序進行更多的測試和返工。
對我採取的方法有什麼想法或更好的方式來獲得我正在尋找的響應時間,而無需使用請求來氾濫服務器?
這不是關於控制器的性能。我的問題是故意拖延一些服務器響應 - 而AJAX查詢正在等待警報 - 同時允許其他人繼續。 – Chris 2010-07-07 15:37:35
我只是回顧過去的問題,並認爲我會在這一點上給予信任。 Juggernaut是Orbited的COMET解決方案。通過轉換到Phusion Passenger解決了我的雜種單線程問題。多麼容易的服務,讓您一起去! – Chris 2012-02-14 14:38:37