我正在运行我的独立Intraweb应用程序作为服务。现在我需要实现一个写入的函数 数据库表的“心跳”时间戳。我在其他使用的服务应用程序中完成了此操作 TService Classm,我可以使用OnAfterInstall,OnExecute等事件。
有没有办法可以在作为服务运行的独立intraweb应用程序中使用该事件?
感谢所有信息
沃尔夫冈答案 0 :(得分:2)
我开始在我自己的Intraweb应用程序中完成此操作,但因为IWServiceWizard隐藏了服务详细信息,包括主要的Execute循环,我在服务器端做了所有,我使用的是应用程序模式。
我在会话类上定义了一个心跳方法(RunSQL是我自己的数据访问层对象DBConnection上的一个方法,这可能是一个围绕TADOConnection的简单包装器。)
function TIWUserSession.UpdateHeartbeat: boolean;
var
sSQL : string;
begin
sSQL := 'UPDATE Heartbeats SET LastComms = getdate()'+
' WHERE SessionID = '+ IntToStr(FSessionID);
Result := DBConnection.RunSQL(sSQL);
end;
一旦我完成了这项工作,只要用户打开一个新的网页,就可以调用这个方法(例如)。
procedure TIWMyPage.IWAppFormCreate(Sender: TObject);
begin
inherited;
Session.UpdateHeartbeat;
end;
只要用户执行与服务器通信的内容,即使它是异步事件(AJAX),也可以使用它。
procedure TIWMyPage.btnRefreshAsyncClick(Sender: TObject;
EventParams: TStringList);
begin
Session.UpdateHeartbeat;
end;
答案 1 :(得分:0)
Intraweb支持TIWTimer,因此向数据库发送时间戳应该非常简单。编码的细节取决于详细的规范。