Seite 1 von 1

Mehrere Downloads gleichzeitig

Verfasst: 21.04.2014 21:44
von Sebert
Hallo zusammen,

wollte erfragen, ob jemandem von euch eine geschickte Lösung meines Problemes einfällt.
Schreibe einen Podcatcher mit integrierter History etc.

Das Ganze erfolgt in Schritten:

1. Feedadresse wird aus Configdatei gelesen.
2. Die Einzelnen Podcastfolgen/enclosures aus dem Feed werden
a) Mit einer History abgeglichen
b) Falls noch nicht vorhanden werden alle Daten (url, Zielordner, Datum, Titel, Description etc..)
in eine strukturierte Liste gespeichert.
3. Wenn alle Feeds abgearbeitet wurden, dann wird die Liste abgearbeitet.

Code: Alles auswählen

Structure INFOS
  Titel.s
  Date.s
  Album.s
  Artist.s
  Genre.s
  Description.s
  Entrypath.s
  Targetpath.s
  FeedURL.s
EndStructure  

Global NewList Tags.INFOS()

[..]
ForEach Tags()
  
 If SimpleHTTP_GET_File(Tags()\Entrypath, Tags()\Targetpath, #False)
    WriteTags() ; Schreibt die Tags in die heruntergeladenen Dateien, entnimmt die Daten dem aktuellen Element der Liste Tags()
    historyentry(Tags()\Entrypath ,Tags()\FeedURL)   ;Schreibt Datei in die XML History
 Else
   AddElement(Fails()) ;Liste in der die gescheiterten Downloads abgespeichert werden.
   
;Falls Dateifragment heruntergeladen wurde, aber nicht vollständig, wird fragment gelöscht 
  If FileSize(Tags()\Targetpath) = -1      
  Else
    DeleteFile(Tags()\Targetpath)
  EndIf  
 EndIf
           
Next  
Jetzt würde ich gerne aber mehrere Dateien gleichzeitig herunterladen, um die Bandbreite optimal auszunutzen.
Würde sich das bewerkstelligen lassen? Habe mit Threads bisher nur im Zusammenhang mit der GUI gearbeitet.

Meine Probleme:
- Wenn mehrere Datein gleichzeitig heruntergeladen werden, klappt das ja mit dem aktuellen Element aus der List nicht mehr. Also über eine Schleife in zBsp. 2er Schritten?
- Wie würde man verhindern, dass bei mehrfacher Ausführung der "historyentry" Prozedur es keine Probleme mit dem Zugriff auf die History (ist eine XML Datei) kommt?


Wäre für Denkanstösse dankbar !

Grüße

Sebastian

Re: Mehrere Downloads gleichzeitig

Verfasst: 21.04.2014 22:11
von NicTheQuick
Sebert hat geschrieben:Meine Probleme:
- Wenn mehrere Datein gleichzeitig heruntergeladen werden, klappt das ja mit dem aktuellen Element aus der List nicht mehr. Also über eine Schleife in zBsp. 2er Schritten?
Du nutzt eine Warteschlangenstruktur wie ich sie zum Beispiel hier programmiert habe: [PB] HowTo: ConcurrentQueue
- Wie würde man verhindern, dass bei mehrfacher Ausführung der "historyentry" Prozedur es keine Probleme mit dem Zugriff auf die History (ist eine XML Datei) kommt?
Mit Locks, also einem Mutex.[/quote]

Re: Mehrere Downloads gleichzeitig

Verfasst: 21.04.2014 22:11
von STARGÅTE
Könntest du bitte eine Quelle zu "SimpleHTTP_GET_File()" geben?
Ist die Funktion Thread-Safe ?
Sebert hat geschrieben:- Wenn mehrere Datein gleichzeitig heruntergeladen werden, klappt das ja mit dem aktuellen Element aus der List nicht mehr. Also über eine Schleife in zBsp. 2er Schritten?
- Wie würde man verhindern, dass bei mehrfacher Ausführung der "historyentry" Prozedur es keine Probleme mit dem Zugriff auf die History (ist eine XML Datei) kommt?
Mit Mutexes kannst du Regionen in Thread gegeneinander schützen.
So kannst du die Auswahl eines Elements mit Mutex schützen und dann aus der Bearbeitungs-Liste löschen.
Genauso kannst du mit einem Mutex das XML schützen, sodass immer nur ein Thread drauf zugreifen kann.

Re: Mehrere Downloads gleichzeitig

Verfasst: 21.04.2014 22:17
von Sebert
@NicTheQuick

Danke für die Antwort. Werde mir das mal anschauen.

@STARGÅTE
Habe das von hier:
http://purebasic.fr/english/viewtopic.p ... 63ec9852de
Hatte im Hinterkopf gelesen zu haben, dass sowas mit den Funktionen der Library geht. Finde
das aber im Momnet nict mehr.

Schonmal danke für die Antworten.

Grüße

Sebastian

__________________________________________________
Domain angepasst
21.04.2014
RSBasic

Re: Mehrere Downloads gleichzeitig

Verfasst: 24.04.2014 18:21
von HeX0R
Soll das Win-Only werden?
Dann wäre das hier evtl. was für Dich, damit kannst Du recht einfach mehrere Downloads im Hintergrund durchführen.

Re: Mehrere Downloads gleichzeitig

Verfasst: 24.04.2014 21:11
von Sebert
Hi HeXOR,

danke für den link.
Werde mir das mal anschauen, benütze mittlerweile Wget für die Downloads.
Alle anderen Methoden hatten dann doch ziemlich Probleme mit manchen Podcasts, da die
Links dort teilweise durch 3-4 redirects gejagt werden.

Werde dein Include mal testen. Wenn das funzt wäre das natürlich super,
interne/integrierte Lösungen sind mir da lieber.

Grüße

Sebastian