Fragen zur Funktion von FTP_Ex.au3

  • Hallo an Alle,

    ich habe zu Testzwecken folgenden Code geschrieben, der eine Anzahl von Dateien auf einen FTP-Server speichert, und nach jedem Speichern den Ordnerinhalt des Servers ausliest und anzeigt:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <FTP_Ex.au3>

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

    Global $sess = "Test", $serv = "server", $user = "user", $pass = "pass"
    Global $FTP, $FTPServer, $FTPDir, $array, $file

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

    $FTP = _FTPOpen($sess)
    $FTPServer = _FTPConnect($FTP,$serv,$user,$pass)
    $FTPDir = _FtpSetCurrentDir($FTPServer,"/www")

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

    For $i = 1 To 10
    $file = "test__" & $i & ".php"
    _FTPPutFile($FTPServer, "test.php", $file)
    Sleep(5000)
    $array = _FTPFilesListTo2DArray($FTPServer,0)
    _ArrayDisplay($array)
    Next

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

    _FTPClose($FTPServer)
    _FTPClose($FTP)

    [/autoit]

    Nun die Fragen:

    1. Werden die _FTP - Befehle erst vollständig ausgeführt, bevor das Programmm weiter abläuft, oder sollte man die Ausführung der einzelnen Befehle abfragen (z.B. mit @error), um einen stabilen Ablauf zu gewährleisten??

    2. Der neue Ordnerinhalt wird nicht richtig angezeigt, obwohl das Speichern klappt (fast schon eine Antwort auf 1. !!). Erst nach Neustart des Programmes sind dann alle Dateien im Array enthalten. Woran liegt das (Servereinstellung, Zeitfaktor, .....)?

    Danke schon mal für Tips

    Ergänzung:

    Auch folgende Version zeigt kein anderes Ergebnis, die gespeicherten Daten werden erst nach Neustart des Programms angezeigt ????????

    Spoiler anzeigen
    [autoit]


    Global $FTP, $FTPServer, $FTPDir, $array

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

    For $i = 1 To 10
    $FTP = _FTPOpen($sess)
    $FTPServer = _FTPConnect($FTP,$serv,$user,$pass)
    $FTPDir = _FtpSetCurrentDir($FTPServer,"/www")
    $file = "test__" & $i & ".php"
    _FTPPutFile($FTPServer, "test.php", $file)
    Sleep(5000)
    $array = _FTPFilesListTo2DArray($FTPServer,0)
    _ArrayDisplay($array, "Versuch ")
    _FTPClose($FTPServer)
    _FTPClose($FTP)
    Next

    [/autoit]

    2. Ergänzung:

    Auch das Einfügen einer längeren Wartezeit zwischen den Connects ändert nichts .................

  • setze mal den 3. Parameter der FileList-Funktion auf $INTERNET_FLAG_RELOAD = 0x80000000 ;)

    [autoit]

    $INTERNET_FLAG_RELOAD = 0x80000000
    $array = _FTPFilesListTo2DArray($FTPServer,0, $INTERNET_FLAG_RELOAD)

    [/autoit]
  • setze mal den 3. Parameter der FileList-Funktion auf $INTERNET_FLAG_RELOAD = 0x80000000 ;)

    [autoit]

    $INTERNET_FLAG_RELOAD = 0x80000000
    $array = _FTPFilesListTo2DArray($FTPServer,0, $INTERNET_FLAG_RELOAD)

    [/autoit]

    ;(8|;(8|;(

    Du bist mir unheimlich ..... aber das klappt super ..... aber was gibt der Parameter an, ist das eine Reloadzeit ?? und wo findet man sowas??

  • ;(8|;(8|;(

    Du bist mir unheimlich ..... aber das klappt super ..... aber was gibt der Parameter an, ist das eine Reloadzeit ?? und wo findet man sowas??


    Der Parameter gibt an, dass die Liste neu vom Server geholt wird und nicht aus dem Cache. Die Parameter findet man unter anderem direkt bei Microsoft auf MSDN ;)
    Außerdem muss man wissen, dass _FTPFileListToArray intern FTPFindeFirstFile verwendet und den Flag-Parameter daran weitergibt. Das kann man herausfinden, indem man sich das Skript anschaut :P