全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1993
推到 Plurk!
推到 Facebook!

Session Idle Time 該如何實作???

尚未結案
eric_shi
一般會員


發表:5
回覆:19
積分:4
註冊:2002-07-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-14 16:07:56 IP:210.242.xxx.xxx 未訂閱
在 Borland\Delphi7\Demos\Midas\Pooler 的範例中, 有設定 Clinet 對 APSERVER 的 TimeOut, 該範例最多可產生 15 個 Session, 但是不會釋放,該如何才能實作設計一 Idle Time, 使 APSERVER 對 DB 的 Session 自動逐一釋放???
change.jian
版主


發表:29
回覆:620
積分:439
註冊:2003-06-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-14 17:01:23 IP:61.229.xxx.xxx 未訂閱
to eric_shi: 可否說明一下你為何會希望要能釋放該ApServer 對 DB 的 Session? 這個範例,就是Borland用來示範如何做到所謂的connection pooling的功能.程式先對db做好連線的動作,然後,當client端有需要連接資料庫時,apserver就會從這些已連線的session中,找一條沒有在用的給client端,用完了再放回去. 會有這樣的設計機制,是希望省去對db的login動作,因為做一個資料連線,需要登入帳號,密碼,資料庫需要一些反應時間.不要讓每個client端都需要花這個時間去做資料庫登入的動作,可以增加client端的反應速度,這就是 connection pooling的精神.
eric_shi
一般會員


發表:5
回覆:19
積分:4
註冊:2002-07-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-15 08:46:01 IP:210.66.xxx.xxx 未訂閱
其實在 DB 上的每一 Session 都會佔用一定的資源, 所以我希望在兩面兼顧的情況下, 能夠有 connection pooling 及 DB 的資源精簡; 再提一相關問題, 如果我想做到每一 ApServer 最多只能有 15 個 Session, Client 為無狀態,所以每次有需求才向 ApServer 要一 Session, 但當 Client 的動作完畢,就釋放該 Session, 當 Session 滿時,則設一 TimeOut, 不知這樣該如何實在才好??? 希望各位前輩高手能多多指教!!!
change.jian
版主


發表:29
回覆:620
積分:439
註冊:2003-06-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-07-15 09:59:31 IP:218.161.xxx.xxx 未訂閱
1.在原來的source code中,即有設定最多只能有15個session
constructor TPoolManager.Create;
begin
  FRDMList := TList.Create;
  FCriticalSection := TCriticalSection.Create;
  FTimeout := 5000;
  FMaxCount := 15;  //<--這裡就是控制最多只能有15個connection的地方
  FSemaphore := CreateSemaphore(nil, FMaxCount, FMaxCount, nil);
end;
2.每次有需求才向 ApServer 要一 Session,但當 Client 的動作完畢,就釋放該 Session. 該程式本來就是這樣設計的,你可以看一下TPoolManager.LockRDM及TPoolManager.UnlockRDM這兩個function/procedure裡的內容就知道了.在function LockRDM裡,會先找已經存在的session有沒有沒有在用的,如果都沒有,才會呼叫CreateNewInstance建立一個新的session.而UnlockRDM則會把該session使用中的標記清除(藉由呼叫ReleaseLock來完成)
引言: 其實在 DB 上的每一 Session 都會佔用一定的資源, 所以我希望在兩面兼顧的情況下, 能夠有 connection pooling 及 DB 的資源精簡; 再提一相關問題, 如果我想做到每一 ApServer 最多只能有 15 個 Session, Client 為無狀態,所以每次有需求才向 ApServer 要一 Session, 但當 Client 的動作完畢,就釋放該 Session, 當 Session 滿時,則設一 TimeOut, 不知這樣該如何實在才好??? 希望各位前輩高手能多多指教!!!
eric_shi
一般會員


發表:5
回覆:19
積分:4
註冊:2002-07-20

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-07-15 10:41:57 IP:210.242.xxx.xxx 未訂閱
不好意思,沒有說清楚, 我所謂的"釋放該 Session", 是指 DB 的釋放,而不是 ApServer, 這樣 DB 才不會浪費資源。
Ktop_Robot
站務副站長


發表:0
回覆:3511
積分:0
註冊:2007-04-17

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-04-30 13:44:05 IP:000.000.xxx.xxx 未訂閱
提問者您好:


以上回應是否已得到滿意的答覆?


若已得到滿意的答覆,請在一週內結案,否則請在一週內回覆還有什麼未盡事宜,不然,
將由版主(尚無版主之區域將由副站長或站長)自由心證,選擇較合適之解答予以結案處理,
被選上之答題者同樣會有加分獎勵同時發問者將受到扣 1 分的處分。不便之處,請見諒。


有問有答有結案,才能有良性的互動,良好的討論環境需要大家共同維護,感謝您的配合。

------
我是機器人,我不接受簡訊.
系統時間:2024-04-26 5:39:34
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!