gpt4 book ai didi

Delphi Soap WebServer 不允许同时调用超过 2 个

转载 作者:行者123 更新时间:2023-12-03 15:32:47 25 4
gpt4 key购买 nike

我在使用 SOAP WebServer 时遇到问题:如果服务器上有一个方法需要几秒钟才能给出结果,并且我无法从我的服务器“同时”(从线程调用)进行两次以上的调用客户端应用程序(同样在 Delphi 中开发 - 仅用于测试,最终的客户端应用程序将基于 Web)。我的意思是,线程以某种方式序列化,我不知道它是否应该像这样发生,或者我是否做错了什么,或者我是否需要进行某些设置。

Delphi XE2 Professional,Windows 7 64 位

链接到我的压缩项目: http://1drv.ms/Nwu9nY

服务器方法:

function TServiciu.Test: string;
var t0, t1, Duration : Cardinal;
Guid : tguid;
RGuid : HRESULT;
received : boolean;
const MaxTime : Cardinal = 3000;
begin
Result := '';
RGuid := CreateGuid(Guid);
if RGuid = S_OK then
Result := GuidToString(Guid);
t0 := GetTickCount;
t1 := GetTickCount;
duration := t1 - t0;
while (Duration < Maxtime) do begin
//waiting for something to be written in a db by another program
//I am doing querys to the database for that result
if received then begin
Result := Result + '_RECEIVED_' + DateTimeToStr(Now);
Break;
end;
t1 := GetTickCount;
duration := t1 - t0;
if duration > Maxtime then begin //MaxTime allowed is exceded
Result := Result + '_NOTRECEIVED_' + DateTimeToStr(Now);
Break;
end;
end;
end;

我的线程的客户端过程执行:

procedure TThreadTest.Execute;
begin
try
// OleCheck will raise an error if the call fails
OleCheck(CoInitializeEx(NIL, COINIT_MULTITHREADED or COINIT_SPEED_OVER_MEMORY));
try
s := 'Calling Method Test; Result=' +
Self.ThGetService.Test;
Synchronize(self.ScrieRezultat); //write result in memo
finally
CoUninitialize;
FreeAndNil(self.ThHttprio);
end;
except
// We failed, do something
end;
end;

最佳答案

我能够毫无问题地处理 40 个并发调用(实际上不止这个),但我使用了不同的方法。我的服务是 CGI 可执行文件,因此 IIS 管理连接。当发出 SOAP 请求时,IIS 会启动 myapp_cgi.exe 的新实例来处理该请求。我的最高速度为 40 TPS,但我在 4 台服务器之间实现了负载平衡,因此我实际上可以达到 160 TPS,如果需要的话,可持续一整天。

关于Delphi Soap WebServer 不允许同时调用超过 2 个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22527219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com