我用delphi6.0开发一个前台售票系统,后台是用sqlserver2000.前台售票系统很繁忙,24小时运转,但现在存在几个问题。前台运行一段时间后,整个售票系统会变慢小来,有时候输入一个金额的数字,都好象很慢,还有上面显示的时间也会慢慢和当前时间对不上,有时慢十分钟左右.请问这是什么问题。(我时间显示是用定时器Timer1来刷新的,我每次保存数据前都有ping 一下服务器看其是否网络通的,然后也反映在当前画面是否是联机)分不够可以再加
调试欢乐多
我里面的步骤是这样的,想用api的那个ping主机的函数去ping一下,看网络是否和服务器是通的
否则数据就存到本地,如果网络是通的,就开启数据的事物(ADOConnection1.BeginTrans)--》数据库操作-->提交事物(ADOConnection1.CommitTrans),出错就回滚事物。其他也没什么
很奇怪,我怀疑是不是事物占用资源了
var
IPOpt:TIPOptionInformation;// IP Options for packet to send
FIPAddress:DWORD;
pReqData,pRevData:PChar;
pIPE:PIcmpEchoReply; // ICMP Echo reply buffer
FSize: DWORD;
MyString:string;
FTimeOut:DWORD;
BufferSize:DWORD;begin
result:=false;
if ServerIP='' then exit; FIPAddress := inet_addr(PChar(ServerIp));
FSize := 40;
BufferSize := SizeOf(TICMPEchoReply) + FSize;
GetMem(pRevData,FSize);
GetMem(pIPE,BufferSize);
FillChar(pIPE^, SizeOf(pIPE^), 0);
pIPE^.Data := pRevData;
MyString := 'Hello';
pReqData := PChar(MyString);
FillChar(IPOpt, Sizeof(IPOpt), 0);
IPOpt.TTL :=64;
FTimeOut := 300; //1000
IcmpSendEcho(hICMP, FIPAddress, pReqData,
Length(MyString), @IPOpt, pIPE, BufferSize, FTimeOut);
try
if pReqData^ = pIPE^.Options.OptionsData^ then
begin
if not Conn then
begin
DM1.ADOConnection2.CLose;
DM1.ADOConnection2.ConnectionString:=
Format(sSQLConnectionString,[readReg('SQLPassword'),
readReg('SQLUserName'),readReg('SQLDB'),readReg('SQLServerName')]); DM1.ADOConnection2.LoginPrompt:=false;
DM1.ADOConnection2.ConnectionTimeout:=15;
DM1.ADOConnection2.Connected:=True;
Conn:=true;
Pos_main2Frm.sCurOperator:='请按F4及时提交离线数据'; end;
result:=true;
end; except
Conn:=false;
end;
FreeMem(pRevData);
FreeMem(pIPE);
end;
是不是占用的内存没有及时释放。
我也出现过,以前这种情况一天出现一次,先在好了,一月一次。可能是from太多了,后来改了,改成只有一个MAIN FROM,其他FROM出现的时候临时CREATE,用完后马上释放。但一月一次频率也挺高的,还在查找原因中
现在都close了,看看了。