LoadFromUrl und Timeout [erledigt]

Vom Front-End bis SOAP.

Moderator: Moderatoren

Antworten
Benutzeravatar
Scarmo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 151
Registriert: Di, 24. Jul 2007 9:17

LoadFromUrl und Timeout [erledigt]

Beitrag von Scarmo » Mo, 28. Aug 2017 16:09

Hallo zusammen

Im Moment plage ich mich mit einem LoadFromUrl-Problem rum... Und zwar bricht mir genau nach 30 Sekunden der Server (bzw. LoadFromUrl) die Verbindung ab... Der Server benötigt für meine Auswertung jedoch ca. 70 Sekunden, was mit einem direkten Aufruf via Browser auch einwandfrei funktioniert.

Kann es sein, dass die Funktion LoadFromUrl() einen eigenen Timeout hat?

Bin für jeden Hinweis dankbar!

Gruss
Marco
Zuletzt geändert von Scarmo am Di, 29. Aug 2017 8:08, insgesamt 1-mal geändert.

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 7322
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: LoadFromUrl und Timeout

Beitrag von Tom » Mo, 28. Aug 2017 16:23

Hallo, Marco.

70 Sekunden sind sehr viel. Ist das Dein eigener Server, der da antwortet, oder ein anderer? Im letzten Fall kann es sein, dass der Server weiß, dass er sehr lange brauchen wird, und inzwischen 0-Chunks sendet, um das Timeout zu unterbinden - aber Du reagierst nicht darauf. Ich habe noch nicht mit LoadFromUrl gearbeitet, mache aber mit Xb2.Net etwas sehr ähnliches - allerdings aus Serversicht. Wenn eine Funktion aufgerufen wird, die u.U. lange Zeit braucht, um die Antwort zu generieren, schickt der Server in einem 10-Sekunden-Rhythmus Dummy-Chunks ohne Daten, um die Verbindung aufrecht zu halten, bis die Antwort fertiggestellt ist. Allerdings muss der Client darauf reagieren, das also wissen. Die User-Funktion, die über Parameter 12 (bcUserFunc) scheint mir hierfür gedacht zu sein.
Herzlich,
Tom

DelUser01

Re: LoadFromUrl und Timeout

Beitrag von DelUser01 » Mo, 28. Aug 2017 16:33

Hallo Marco,

starte doch LoadFromUrl() erst nach 1-2 Minuten wenn der Server vorher sowieso nichts rausgibt.

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 7322
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: LoadFromUrl und Timeout

Beitrag von Tom » Mo, 28. Aug 2017 16:37

starte doch LoadFromUrl() erst nach 1-2 Minuten wenn der Server vorher sowieso nichts rausgibt.
Originelle Idee. Und woher weiß der Server, wonach er in ein bis zwei Minuten gefragt werden wird?
Herzlich,
Tom

DelUser01

Re: LoadFromUrl und Timeout

Beitrag von DelUser01 » Mo, 28. Aug 2017 16:43

Tom hat geschrieben:
Mo, 28. Aug 2017 16:37
Und woher weiß der Server, wonach er in ein bis zwei Minuten gefragt werden wird?
Z.B.
1) zuerst mit LoadFromUrl() die Verarbeitung starten, der Server erstellt daraufhin eine Ergebnisdatei,
2) dann mit LoadFromUrl() die Ergebnisdatei abholen...

Benutzeravatar
Scarmo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 151
Registriert: Di, 24. Jul 2007 9:17

Re: LoadFromUrl und Timeout [erledigt]

Beitrag von Scarmo » Di, 29. Aug 2017 8:07

Guten Morgen

Vielen Dank für die Inputs! Offenbar liegt der Timeout innerhalb von LoadFromUrl() bei 30 Sekunden (Windows-Standard). Ich habe nun mit der Funktion InternetSetOptionA(ic , INTERNET_OPTION_CONNECT_TIMEOUT, @nTimeout, 4) diesen Timeout höher gesetzt und siehe da, es klappt!! =D>

Wichtig ist einfach, dass der Funktions-Aufruf direkt nach dem InternetConnectA-Aufruf erfolgt (später kann der Timeout nicht mehr geändert werden...)!

Mir ist bewusst, dass 70 Sekunden für eine Auswertung seeeehr lange ist (normalerweise dauert es ca. 10 Sekunden), aber bei diesem Kunden sind so viele Daten auszuwerten, dass es einfach länger dauert!

Gruss
Marco

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14587
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: LoadFromUrl und Timeout [erledigt]

Beitrag von brandelh » Di, 29. Aug 2017 13:21

Ja für solche Änderungen ist die LoadFromUrl() Vorlage von Phil Klasse, die von der 1.90.xxx kann man ja nicht ändern.
Gruß
Hubert

Antworten