1
我有一個非常簡單的使用Rack的Web服務,沒有Rails,我將在每個有效連接上聯繫MySQL。我想堅持連接(例如在構造函數中),以便在每次請求時重用它。比方說像這樣:如何使用Ruby(無RoR)持久化mysql連接(mysql2 gem)
class Service
def initialize(dbhost, dbport, dbname, dbuser, dbpass)
@client = Mysql2::Client.new(
:host => dbhost,
:port => dbport,
:database => dbname,
:username => dbuser,
:password => dbpass)
end
def call(env)
# some logic that will call:
results = _query(sql)
end
def _query(sql)
results = @client.query(sql)
end
end
Rack::Handler::Mongrel.run Service.new(DB_HOST, DB_PORT, DB_NAME, DB_USER, DB_PASS), :Port => 8123
通過上面的代碼,該服務將獲得一個MySQL連接,並在每一次請求它會做一個查詢。但是,如何確保連接斷開,_query
方法將重新連接?
你確定連接是否建立在每一個請求,你可以檢查是否是這將是奇怪,因爲通常是多年平均值發生 – Viren
它不是!正如我所說,我想建立並堅持它只有一次,並重用'_query'方法。我希望能夠處理下降的情況。 – ddinchev
糾正我,如果我錯了'它不是'什麼不在這裏,它每次都會建立連接或者每次都沒有建立連接,正如我之前說的,Rack的行爲就像上面提到的那樣,即任何'middleware new'只在調用期間被調用一次當middelware堆棧被構建時,它會如此顯示你連接的代碼persit – Viren