保持连接 - mysql
Keeping connection alive - mysql
我已经设置了我使用名为 Connect
的按钮创建的 delphi 应用程序。
单击它后,它会执行以下代码:
begin
someConnection.Connected:=true;
somecomenziDataSet.Active:=true;
end;
同样,我有一个用于 Disconnect
目的的按钮,它做同样的事情,但 =false;
我的问题是我要连接的数据库托管在共享主机帐户上,mysql 服务器的 wait_timeout
变量设置为 60 秒,interactive_timeout
设置为30秒。
如果我 60 秒不使用我的应用程序,这自然会断开连接。
有什么方法可以保持这种连接吗?
托管公司不会更改设置,所以我坚持使用它。
我正在使用 RAD Studio 10 Seattle,dbexpress
个组件,TSQLConnection
,我的数据库是 mysql
如果我遗漏了任何必要的信息,请在评论中告诉我,谢谢!
您可以使用 TTimer
定期 "ping" 数据库(例如,给定 60 秒超时,间隔 10-20 秒):
procedure TMyDataModule.ConnectionPingTimer(Sender: TObject);
begin
if not MySQLConnection.InTransaction then
MySQLConnection.Execute('DO 0', nil); // or "SELECT 1" or whatever is cheapest
end;
我已经设置了我使用名为 Connect
的按钮创建的 delphi 应用程序。
单击它后,它会执行以下代码:
begin
someConnection.Connected:=true;
somecomenziDataSet.Active:=true;
end;
同样,我有一个用于 Disconnect
目的的按钮,它做同样的事情,但 =false;
我的问题是我要连接的数据库托管在共享主机帐户上,mysql 服务器的 wait_timeout
变量设置为 60 秒,interactive_timeout
设置为30秒。
如果我 60 秒不使用我的应用程序,这自然会断开连接。
有什么方法可以保持这种连接吗?
托管公司不会更改设置,所以我坚持使用它。
我正在使用 RAD Studio 10 Seattle,dbexpress
个组件,TSQLConnection
,我的数据库是 mysql
如果我遗漏了任何必要的信息,请在评论中告诉我,谢谢!
您可以使用 TTimer
定期 "ping" 数据库(例如,给定 60 秒超时,间隔 10-20 秒):
procedure TMyDataModule.ConnectionPingTimer(Sender: TObject);
begin
if not MySQLConnection.InTransaction then
MySQLConnection.Execute('DO 0', nil); // or "SELECT 1" or whatever is cheapest
end;