線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1811
推到 Plurk!
推到 Facebook!

請問要如何實做將死掉的Session Free掉

缺席
frappe
中階會員


發表:88
回覆:114
積分:95
註冊:2008-10-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-04-13 15:32:59 IP:60.251.xxx.xxx 訂閱
最近在導入DataSnap發現一個問題,

中間層可能存在死掉了Session, 但該Session ServerMethods上面的TSQLConnection仍然與資料庫連線,
導致我在SQL Server的sp_who2查到一些不應該出現的連線

請問DataSnap XE要如何知道中間層產生了幾個TServerMethods,
並且有辦法把死掉的Session, 將他的ServerMethods Free掉嗎?
frappe
中階會員


發表:88
回覆:114
積分:95
註冊:2008-10-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-04-14 08:36:53 IP:60.251.xxx.xxx 訂閱
我有想到一個笨方法, 但是好像還有一點問題,
我在TServerMethods1放一個Timer, 一小時後自動Free,
但發現Timer好像沒有反應, 有辦法實做類似的功能嗎/
GrandRURU
站務副站長


發表:234
回覆:1654
積分:1752
註冊:2005-06-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2015-07-13 11:23:29 IP:59.120.xxx.xxx 未訂閱
詳見:Monitoring and Controlling DataSnap TCP/IP Connections - Detecting Graceless Disconnects
===================引 用 frappe 文 章===================
最近在導入DataSnap發現一個問題,

中間層可能存在死掉了Session, 但該Session ServerMethods上面的TSQLConnection仍然與資料庫連線,
導致我在SQL Server的sp_who2查到一些不應該出現的連線

請問DataSnap XE要如何知道中間層產生了幾個TServerMethods,
並且有辦法把死掉的Session, 將他的ServerMethods Free掉嗎?
lin
一般會員


發表:1
回覆:12
積分:7
註冊:2002-09-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2015-10-01 23:56:28 IP:220.133.xxx.xxx 訂閱
uses
IdTCPConnection,IdWinsock2,IdContext

procedure TServerContainer1.DSServer1Connect(DSConnectEventObject: TDSConnectEventObject);
var
Val: TCP_KeepAlive;
Ret: DWord;
ClientConnection: TIdTCPConnection;
begin
ClientConnection := TIdTCPConnection(DSConnectEventObject.ChannelInfo.Id);
Val.OnOff := 1;
Val.KeepAliveTime :=3000;
Val.KeepAliveInterval :=3000;
if WSAIoctl(ClientConnection.Socket.Binding.Handle, IOC_IN or IOC_VENDOR or 4,
@Val, SizeOf(Val), nil, 0, @Ret, nil, nil)=SOCKET_ERROR
then begin;
DSConnectEventObject.DbxConnection.Destroy;
Exit;
end;
end;

//網路 client 掉線後 3秒,會清除
------
系統時間:2017-11-22 20:35:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!