Seite 1 von 1

FTP-Upload sehr langsam

Verfasst: 22.07.2014 10:51
von Rene-RNI
Hallo leute,

habe mir einen Uploader gebastelt, der funktioniert auch ganz gut,
blos dass der Upload sehr langsam läuft(in gegensatz zu Filezilla).

hier mal der code den ich verwende:

Code: Alles auswählen

Procedure Upload()
  
  Global x = CountGadgetItems(#gad_LV_Uploads)
 
  Debug x
  For i = 0 To x - 1
    stat = i + 1
    
    StatusBarText(#gad_Status, 0, "File " + stat +" von " + x )
    text1$ = GetGadgetItemText(#gad_LV_Uploads, i, 0)
    text2$ = GetGadgetItemText(#gad_LV_Uploads, i, 1)
    text3$ = GetGadgetItemText(#gad_LV_Uploads, i, 2)
    SetGadgetItemColor(#gad_LV_Uploads, i, #PB_Gadget_BackColor, Color($FF,$FF,$00))
    c = Split(text1$, "|" , Woerter())
    Debug "Eintrag:" + i + ", Service:" + text1$ + ", Show:" + text2$ + ", Datei:" + text3$ 
    
  If text1$ = "DE"
    Dir$ = "germanservice"
  ElseIf text1$ = "EN"
    Dir$ = "englishservice"
  ElseIf text1$ = "DT"
    Dir$ = "dutchservice"
  EndIf

  Debug Dir$
  
  If OpenFTP(#FTP, FTPServer$, FTPUser$, FTPPass$)
    If SetFTPDirectory(#FTP, Dir$)
      If SendFTPFile(#FTP, text3$, text2$, #True)
        SizeOfFile.l =  FileSize(text3$)
        SetGadgetAttribute(#gad_PGB_Upload, #PB_ProgressBar_Maximum, SizeOfFile)
        Repeat
          Repeat
          Until (WaitWindowEvent(50) = 0)
          Debug "FTP Progress"+ Str(FTPProgress(#FTP))
          SetGadgetState(#gad_PGB_Upload, FTPProgress(#FTP))
        Until FTPProgress(#FTP) = #PB_FTP_Finished Or FTPProgress(#FTP) = #PB_FTP_Error
          StatusBarText(#gad_Status, 0, "Upload finisched, Next File" )
          SetGadgetItemColor(#gad_LV_Uploads, i, #PB_Gadget_BackColor, Color($00,$FF,$00))
        Else
          SetGadgetItemColor(#gad_LV_Uploads, i, #PB_Gadget_BackColor, Color($FF,$00,$00))
        MessageRequester("ERROR", "Upload failed", #PB_MessageRequester_Ok)
      EndIf
      Else
      MessageRequester("ERROR", "Service not selected", #PB_MessageRequester_Ok)
    EndIf
  Else
    MessageRequester("ERROR", "FTP Connect failed", #PB_MessageRequester_Ok)
  EndIf
    CloseFTP(#FTP)
  Next
  StatusBarText(#gad_Status, 0, "All Uploads finisched" )
EndProcedure
hat da jemand einen vorschlag wie man das beschleunigen kann???

wäre super.

Danke euch schon mal.
Gruß Rene

Re: FTP-Upload sehr langsam

Verfasst: 22.07.2014 11:10
von ts-soft
Die äußere Schleife erscheint mir sinnlos, zumindest das dort immer wieder OpenFTP ausgeführt wird.

Das Repead : Until (WaitWindowEvent(50) = 0) würde ich auch anders lösen, total anders.

Und nur so als Anmerkung: FileSize ist Quad und kein Long (sollte dem ganzen aber kein Abbruch tun).

Mehr fällt mir so auf Anhieb nicht auf.

Gruß
Thomas

Re: FTP-Upload sehr langsam

Verfasst: 22.07.2014 11:19
von Rene-RNI
Danke für die schnelle Antwort,

Wie würdest du das mit Until (WaitWindowEvent(50) = 0) denn lösen, hatte vorher immer das Problem dass das Prog auf "keine Rückmeldung" ging.

Das FTPOpen wird nurn ein mal ausgeführt wenn der Upload der z.B. 6 Dateien startet!? oder habe da was falsch??

Gruß Rene

Verfasst: 22.07.2014 11:22
von CodeCommander
@ts-soft Herzlichen Glückwunsch zu deinem 1111. Danke :D

Zum Code von Rene: Warum globalisierst du eine Variable innerhalb einer Prozedur? Ich finde es passt dort nicht hin.

Ist es beabsichtigt das du WaitWindowEvent in deiner Prozedur verwendest? Kann es sein das du außerhalb auch WaitWindowEvent nutzt? Das wäre nicht so gut weil Events dann verschluckt werden können wenn du WaitWindowEvent mehrfach benutzt.
Dein CloseFTP ist in der falschen Position. Du fragst zwar ab ob erfolgreich oder Fehler aber wenn Fehler dann wird CloseFTP trotzdem ausgeführt aber das führt wirklich zu enem Fehler.
Mal schreibst du ein Leerzeichen nach dem Komma und mal nicht. Erstelle bitte einheitlichen Code.

Re: FTP-Upload sehr langsam

Verfasst: 22.07.2014 16:50
von ts-soft
Rene-RNI hat geschrieben:Danke für die schnelle Antwort,

Wie würdest du das mit Until (WaitWindowEvent(50) = 0) denn lösen, hatte vorher immer das Problem dass das Prog auf "keine Rückmeldung" ging.
Ich würde wahrscheinlich den Code in einen Thread packen, aber das hängt wohl auch vom hier fehlenden Code ab.
Rene-RNI hat geschrieben:Das FTPOpen wird nurn ein mal ausgeführt wenn der Upload der z.B. 6 Dateien startet!? oder habe da was falsch??

Gruß Rene
Die äußere Schleife wird x-mal durchlaufen, je nachdem wieviel Inhalt #gad_LV_Uploads hat.
Genauso viele OpenFTP werden ausgeführt, kann im moment aber nicht feststellen, ob die tatsächlich
nötig sind. Ich nehme eher an, nicht aber dafür fehlt der restliche Source (wie immer nicht ausführbar
und keine Beispiele :mrgreen: )

Gruß
Thomas

Re: FTP-Upload sehr langsam

Verfasst: 22.07.2014 16:54
von NicTheQuick
Wenn der Code richtig eingerückt wäre, hätte ich glaube ich auch am Anfang gesehen, dass da komplett außen herum noch diese For-Schleife ist. :wink:
Kleiner Tipp: STRG+A und dann STRG+I