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
LoadFromUrl und Timeout [erledigt]
Moderator: Moderatoren
LoadFromUrl und Timeout [erledigt]
Zuletzt geändert von Scarmo am Di, 29. Aug 2017 8:08, insgesamt 1-mal geändert.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9361
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: LoadFromUrl und Timeout
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.
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
Tom
Re: LoadFromUrl und Timeout
Hallo Marco,
starte doch LoadFromUrl() erst nach 1-2 Minuten wenn der Server vorher sowieso nichts rausgibt.
starte doch LoadFromUrl() erst nach 1-2 Minuten wenn der Server vorher sowieso nichts rausgibt.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9361
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: LoadFromUrl und Timeout
Originelle Idee. Und woher weiß der Server, wonach er in ein bis zwei Minuten gefragt werden wird?starte doch LoadFromUrl() erst nach 1-2 Minuten wenn der Server vorher sowieso nichts rausgibt.
Herzlich,
Tom
Tom
Re: LoadFromUrl und Timeout
Z.B.
1) zuerst mit LoadFromUrl() die Verarbeitung starten, der Server erstellt daraufhin eine Ergebnisdatei,
2) dann mit LoadFromUrl() die Ergebnisdatei abholen...
Re: LoadFromUrl und Timeout [erledigt]
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!!
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
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!!
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
- brandelh
- Foren-Moderator
- Beiträge: 15696
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: LoadFromUrl und Timeout [erledigt]
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
Hubert