将intraweb应用程序作为服务运行时访问事件

时间:2010-11-04 09:44:45

标签: delphi intraweb

我正在运行我的独立Intraweb应用程序作为服务。现在我需要实现一个写入的函数 数据库表的“心跳”时间戳。我在其他使用的服务应用程序中完成了此操作 TService Classm,我可以使用OnAfterInstall,OnExecute等事件。

有没有办法可以在作为服务运行的独立intraweb应用程序中使用该事件?

感谢所有信息

沃尔夫冈

2 个答案:

答案 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,因此向数据库发送时间戳应该非常简单。编码的细节取决于详细的规范。