Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TIdHttpServer: Große Dateien und Downloadmanager... (https://www.delphipraxis.net/99620-tidhttpserver-grosse-dateien-und-downloadmanager.html)

---Bernhard--- 14. Sep 2007 22:23


TIdHttpServer: Große Dateien und Downloadmanager...
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo :hi:

Ich setze mich schon seit einiger Zeit mit einigen Problem des IdHttpServers (Indy 10) auseinander, komme aber trotz langer Recherche leider nicht auf die Lösung.

Was mich derzeit an der Komponente stört, ist, dass sie scheinbar keine zwei gleichzeitigen Verbindungen/Anfragen auf die selbe URL zulässt:

1.: Lade ich z.B. gerade ein großes Bild herunter, so funktioniert dies ohne Probleme. Wird jedoch zur gleichen Zeit die selebe URL nochmals aufgerufen, so kommt beim zweitem Aufruf solange die Sanduhr, bis der erste Download abgeschlossen ist.
Es liegt aber definitiv nicht daran, dass die Datei durch den ersten Download zum lesen gesperrt ist.
:arrow: Lautet die erste Downloadadresse "http://localhost/foto.jpeg" und die zweite Adresse "http://localhost/foto.jpeg?xyz", so funktionieren die Downloads parallel!
Wodurch dieser Fehler ausgelöst wird ist mir schleierhaft :?

2.: Man kann leider keine Download-Manager verwenden, die eine Datei in mehreren Teilen runterladen. Dieser Fehler wird jedoch wohl mit dem ersten zusammenhängen, darum möchte ich gar nicht genauer darauf eingehen.

3.: Mein derzeit größtes Problem: Aus irgendeinem Grund lässt sich der Download nicht zwischenpuffern. Möchte ich z.B. eine Videodatei mit 700-900MB im Webplayer anzeigen lassen, so lädt dieser die Datei erst vollständig herunter. Doch bis es so weit kommt, ist der Browser meist eh schon abgestürzt, kommt mit dieser Großen Datei nicht klar...
Kleine Dateien stellen kein so großes Problem dar, da sie korrekt angezeigt werden. Jedoch auch erst wenn sie vollständig geladen sind. - Zwischenpuffern: Fehlanzeige!


Es wäre echt ganz, ganz toll, wenn mir jemand von euch weiterhelfen könnte. :thumb:


Viele Grüße,

Bernhard

arbu man 15. Sep 2007 08:44

Re: TIdHttpServer: Große Dateien und Downloadmanager...
 
Zur Punkt 3:

Das Problem ist mir bekannt, wenn auch in einen anderen Context. Du müsstest die Methode AResponseInfo.WriteContent aufrufen um die Ausgelesen Daten zu senden, jedoch weiss ich nicht ob man diese Methode mehrmals aufrufen kann. Z.Z. stellt sich dieses Problem mir noch nicht da ich erst Versuche eine große Datei herrunter zu laden und da auch nicht darauf warten will bis alles da ist, Thead

mfg, Björn

---Bernhard--- 15. Sep 2007 11:00

Re: TIdHttpServer: Große Dateien und Downloadmanager...
 
Hallo Björn,

leider löst dein Vorschlag das Problem auch nicht :(
Meines Erachtens ist es so, dass generell am Ende von "IdHTTPServer1CommandGet" WriteContent aufgerufen wird, um die noch nicht übermittelten Daten zu übertragen.
Ist z.B. sinnvoll, wenn man eine längere Textausgabe geplant ist und der erste Teil schon mal angezeigt werden soll, während der restliche Text noch in der "Generierung" ist.

Das manuelle Aufteilen der zu Sendenden Datei und das anschließende Senden der einzelnen Teilche stellt m.E. auch keine Lösung dar, da "IdHTTPServer1CommandGet" erst dann ein zweites mal aufgerufen wird, sobald die erste Verbindung beendet, also alles übertragen wurde!

Es scheint so, als würde bei Aufruf der selben URL die zweite oder jede weitere Verbindung erstmal in eine Warteschleife kommen, die eine nach der anderen abgearbeitet wird.

Eigentlich sind die Indy-Server Komponenten ja so aufgebaut, dass sie mehrere parallele Anfragen unterstützen. Dies wird auch von meinem vorheriges Beispiel bestätigt, dass bei einem zusätzlichen Parameter, egal welcher Art, die parallele Verbindung problemlos klappt...

Kann einfach keine Lösung für diesen Bug finden :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz