我們正在使用Sinatra和Sequel來實現一個小型API。然而,我們遇到的問題是,每次請求時,Sequel都會打開與MySQL的新連接,並保持打開狀態直至超時,或者重新啓動Apache。Sequel + Sinatra + Phusion Passenger + MySQL連接管理
關於如何重用連接沒有太多的文檔,所以任何幫助,解釋和/或正確方向的指針都會有所幫助。
我們正在使用Sinatra和Sequel來實現一個小型API。然而,我們遇到的問題是,每次請求時,Sequel都會打開與MySQL的新連接,並保持打開狀態直至超時,或者重新啓動Apache。Sequel + Sinatra + Phusion Passenger + MySQL連接管理
關於如何重用連接沒有太多的文檔,所以任何幫助,解釋和/或正確方向的指針都會有所幫助。
我們知道我們做錯了什麼。這很愚蠢,我們在Sinatra過濾器之前初始化了Sequel。
所以不是我們做的:
DB = Sequel.mysql("...")
然後我們只需使用DB
常量使用續集。
我包了續集的東西,在一個很小的封裝和複用這個包裝,像這樣:或者
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
謝謝,但是我們已經以不同的方式解決了這個問題。我忘了關閉/回答問題*口哨* :) – jimeh 2009-07-26 21:26:33
你在哪裏設置連接?你能發佈一些示例代碼嗎? – BaroqueBobcat 2009-07-10 00:04:51