2009-07-09 78 views
1

我們正在使用Sinatra和Sequel來實現一個小型API。然而,我們遇到的問題是,每次請求時,Sequel都會打開與MySQL的新連接,並保持打開狀態直至超時,或者重新啓動Apache。Sequel + Sinatra + Phusion Passenger + MySQL連接管理

關於如何重用連接沒有太多的文檔,所以任何幫助,解釋和/或正確方向的指針都會有所幫助。

+0

你在哪裏設置連接?你能發佈一些示例代碼嗎? – BaroqueBobcat 2009-07-10 00:04:51

回答

1

我們知道我們做錯了什麼。這很愚蠢,我們在Sinatra過濾器之前初始化了Sequel。

所以不是我們做的:

DB = Sequel.mysql("...") 

然後我們只需使用DB常量使用續集。

1

我包了續集的東西,在一個很小的封裝和複用這個包裝,像這樣:或者

get '/api/:call' do 
    @@api ||= SApi.new 
    @@api.call(params[:call]) 
end 

class SApi 
    def initialize 
    connect 
    end 
    def connect 
    @con = Sequel.connect("...") 
    end 
    def call(x) 
    #handle call using @con 
    end 
end 

,你可以叫@ con.disconnect一旦你完成或使用塊調用Sequel.connect :

Sequel.connect("...") do |c| 
    # work with c 
end #connection closed 
+0

謝謝,但是我們已經以不同的方式解決了這個問題。我忘了關閉/回答問題*口哨* :) – jimeh 2009-07-26 21:26:33