InetGet() download einer großen Datei (WInHTTP 12002 timeout)

  • Hallo Leute,

    ich habe ein Problem beim Download einer großen (689,119mb) ZIP Datei von einem Webserver.

    das Problem ist, dass die Datei erst nach mehrmaligen Start des Skriptes komplett heruntergeladen wird.
    die ersten ~4 male endet der Download jedesmal mit dem Fehler 12002 (ERROR_WINHTTP_TIMEOUT)

    es sieht ganz so aus, als ob bei jeden erneuten Start der Anfang der heruntergeladenen Datei aus dem IE Cache genutzt wird, und nur der Rest geladen wird, wobei auch immer nur ein paar MB und es dann wieder im Timeout endet.

    in diesen Schritten läuft es etwa ab (689,119=vollsändig):
    622,032 MB
    633,723 MB
    646,032 MB
    658,034 MB
    689,119 MB
    689,119 MB
    ...

    auf dem Webserver sieht man auch, dass nach dem ersten Versuch auch nur Teile der Datei angefordert werden. Der Timeout muss laos irgendwo beim Client (WinXP Prof) liegen....
    ich bin gerade ganz schön ratlos.

    hier der vereinfachte Code:

    [autoit]


    $zip_url = "http:\\user:pwd@hostanme/test.zip"
    $local_file = "c:\test.zip"

    [/autoit][autoit][/autoit][autoit]

    $filesize = InetGetSize($zip_url, 2)
    $one_percent = 100 / $filesize

    $hDownload = InetGet($zip_url, $local_file, 10, 1)

    [/autoit][autoit][/autoit][autoit]

    ProgressOn("Download", "Download", "0 %")
    Do
    Sleep(300)
    Until InetGetInfo($hDownload, 2)
    ProgressSet( $one_percent*InetGetInfo($hDownload, 0), round($one_percent*InetGetInfo($hDownload, 0), 0) & " %")

    [/autoit][autoit][/autoit][autoit]

    ProgressOff()

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Local $aData = InetGetInfo($hDownload) ; Get all information.
    InetClose($hDownload) ; Close the handle to release resourcs.
    MsgBox(0, "", "Bytes read: " & $aData[0] & @CRLF & _
    "Size: " & $aData[1] & @CRLF & _
    "Complete?: " & $aData[2] & @CRLF & _
    "Successful?: " & $aData[3] & @CRLF & _
    "@error: " & $aData[4] & @CRLF & _
    "@extended: " & $aData[5] & @CRLF)

    [/autoit][autoit][/autoit][autoit]

    InetClose($hDownload)

    [/autoit]

    kennt jemand zufällig dieses Phänomen oder kann mir irgendwie helfen???

    Vielen Dank und Grüße :)

  • hi,
    danke zuerst einmal für eure beiträge.

    Bitboy
    ein versuch mit curl zeigte, dass es direkt schon beim ersten mal funktioniert. ein externes programm zu benutzen ist für mich aber derzeit keine alternative...iwie muss man doch die fehlerquelle identifizieren können hm

    @progandy
    danke für den link, aber wie ich es mir schon dachte klappt der code auch nicht. wie gesagt ich gehe ja auch nicht von einem fehler im code selber aus.... es muss irgendetwas mit dem system/winhttp zu tun haben.
    allerdings habe ich das skript auf mehreren clients getestet und nirgends hat es funktioniert, weshalb ich auch von keinem fehler an diesen speziellen client ausgehe.

    ich vermute, dass der fehler irgendwo bei winhttp liegt. nach ein wenig recherche habe ich auch rausgefunden, dass es debug tools (winhttptracecfg.exe) dafür gibt. ich werde mal sehen, ob ich dadurch etwas rausbekomme....


    bin immernoch für jede hilfe dankbar :)

  • Hi,
    Options-parameter von InetGet:

    Code
    [optional] 0 = (Standard) Holt die Datei aus dem lokalen Cache, wenn vorhanden.


    Probiere mal 11 (holt Daten erzwungenermassen vom Remote) statt 10, ich hatte damit schon Erfolg!

  • Das sieht eher danach aus als würde dein Webserver die Verbindung killen, weil du zu lange zum runterladen der Datei brauchst. Da im folgenden dann immer die Dateien im Cache berücksichtig wird hangelt sich das halt so lange weiter bis es ganz hast.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Andy
    danke für den tip...den parameter hatte ich leider auch schon ohne erfolg ausprobiert nur in diesem beispiel vergessen einzutragen

    chip
    für mich sah es auch eher nach einem server problem aus, jedoch sagte mir auf anfrage der admin, dass der client immer wieder die connection killt....
    außerdem funktioniert der download ja über browser und per curl..

    alles sehr merkwürdig....


    im anhang ist das ergebnis in der msgbox vom code oben...: