Http zu langsam



  • Hallo !

    Ich habe eine ListBox in der jede Menge Ebay-Artikel Nummern stehen.
    Nun möchte ich möglichst schnell die zugehörigen Artikel-HTML Dateien und die Artikel Bilder nach C:\Temp runterladen. Leider dauert das ewig und ich weiss nicht wieso... Es dauert so lange das ich fast jede der Dateien von Hand runterladen könnte. Ich benutze die normale HTTP Komponente vom BCB 6 also nicht die Indy Komponente.

    Kann mir jemand sagen wie ich das ganze beschleunigen könnte ?

    Danke !

    // Hole HTML Seite des ersten Artikels
      http->Get("http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&item="+ListBox1->Items->Strings[i]);
      Memo1->Text=http->Body;
      Body=http->Body;
    
      // Wenn es die Datei noch nicht gibt - speichern
     if (!FileExists("C:\\Temp\\"+ListBox1->Items->Strings[i]))
      {
        Memo1->Lines->SaveToFile("C:\\Temp\\"+ListBox1->Items->Strings[i]);
    
        // Bild Adresse finden
        result=http->Body;
        result=strstr(result.c_str(), "SelfHosted_image.src = '");
        pos=result.Pos("';");
        pic=result.SubString(25,pos-25);
    
        // Bild Speichern
        String filename ="C:\\Temp\\"+ListBox1->Items->Strings[i]+".jpg";
        String URL = pic;
        TFileStream *fs = new TFileStream(filename, fmCreate);
        httpindy->Get(URL,fs);
        delete fs;
    
       }
    


  • Der Flaschenhals dürfte der wie üblich saulangsame ebay-Server sein.
    Also nichts, was du beeinflussen kannst.

    PS. Ggf. hilft es ja, das jeweils in Threads auszulagern, dann könntest du mehrere Downloads parallel laufen lassen.



  • Ich hatte auch schon überlegt das man villeicht 10 HTTP Komponenten benutzt aber wie mache ich daß das die gleichzeitig laden ?

    Kann ich einfach

    httpindy->Get(URL,fs);
    httpindy1->Get(URL1,fs);
    httpindy2->Get(URL2,fs);
    
    .
    .
    .
    httpindy9->Get(URL9,fs);
    

    machen ?

    Danke !



  • Push 😞



  • Jansen schrieb:

    PS. Ggf. hilft es ja, das jeweils in Threads auszulagern, dann könntest du mehrere Downloads parallel laufen lassen.



  • Aber wie mache ich das ? 😕 😕 😕



  • Die Forensuche sollte dir zum Thread und Erstellung schon einiges bringen. Desweiteren solltest du dir das Thread-Beispiel im %BCB%\Examples-Ordner ansehen. Ebenfalls nützlich ist die Hilfe zu TThread.


Anmelden zum Antworten