Recursive Datei Auflistung FTP

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Tiffany Dicks, 11. August 2015 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. #1 11. August 2015
    Moin,

    ich hab mal wieder ein Problem, ich weiß nicht was ihr für Infos braucht um mir zu helfen ich gebe was ich kann. Wenn was fehlt einfach fragen.

    Also folgendes Problem.

    Ich arbeite mit FuelPHP einem Codeigniter Fork (glaub ich).

    Ich habe eine Funktion die alle (!) Dateien auf einem FTP Server anzeigt.

    Ich hab jetzt einen Controller in meiner App -> hier funktioniert die Auflistung
    Ich habe den Code in einen Task (Cronjob?) verschoben: Hier funktioniert die Auflistung nicht. Wieso auch immer.

    Die Funktion zur Auflistung:

    PHP:
    function  ftp_get_recursive_paths ( $conn $path $max_level  0 ){
        
    $files  = array();
        if(
    $max_level  0 ) return  $files ;
        if(
    $path  !==  '/'  &&  $path [ strlen ( $path ) -  1 ] !==  '/' $path  .=  '/' ;
        
    $files_list  = @ ftp_nlist ( $conn $path );
        
        foreach(
    $files_list  as  $f ){
            if(
    $f  !==  '.'  &&  $f  !==  '..'  &&  $f  !==  $path ){
                if(@
    ftp_chdir ( $conn $f )){
                    
    ftp_get_recursive_paths ( $conn $f $max_level - 1 );
                }else{
                    
    $files [] =  basename ( $f );
                }    
            }
        }
        
        return 
    $files ;
    }
    Controller Aufruf bringt das erwartete Ergebnis:

    Der ganze Code der Public Methode des Controllers der funktioniert lautet:

    PHP:
    public function  action_index ()
        {
            
            
    $server  Model_Server :: query ()-> where ( 'id' '=' 3 )-> get_one ();
            
    $connection  ftp_connect ( $server -> host $server -> port 30 );
            
    ftp_login ( $connection ,   $server -> username ,   $server -> password );
            
            
    $files  = array();
            
            
    $list  ftp_get_recursive_paths ( $connection '/' 1000 );
            
    $it  = new  RecursiveIteratorIterator (new  RecursiveArrayIterator ( $list ));
    foreach(
    $it  as  $v ) {
      echo 
    $v "<br />" ;
    }
        
           
    Debug :: dump ( ftp_get_recursive_paths ( $connection '/' 1000 ));
            return new 
    Response ();
           
        }
    Wenn ich nun den Task aufrufe geht ein ähnlicher Code nicht mehr.

    Der Code lautet:

    PHP:

        
    public static function  run ()
        {
            
            while(
    true )
            {
            
                
    $servers  = \ Model_Server :: query ()-> where ( 'active' '=' 1 )-> get ();
                foreach(
    $servers  as  $server )
                {
                    \
    Cli :: write ( $server -> host . ' loaded' );
                }
                foreach(
    $servers  as  $server )
                {
                    
                    \
    Cli :: write ( 'connecting ' . $server -> host . ':' . $server -> port );
                    
    $connection  = @ ftp_connect ( $server -> host $server -> port 30 );
                    if(!
    $connection )
                    {
                        \
    Cli :: write ( 'error' );
                        continue;
                    }
                    
                    \
    Cli :: write ( 'login try: ' . $server -> username );
                    if(!@
    ftp_login ( $connection ,   $server -> username ,   $server -> password ))
                    {
                        \
    Cli :: write ( 'error' );
                        continue;    
                    }
                    
                    
    $observers  = \ Model_Server_Observer :: query ()-> where ( 'server_id' '=' $server -> id )-> get ();
                    foreach(
    $observers  as  $observer )
                    {
                    
                        \
    Cli :: write ( 'looking for files @ ' . $observer -> dir );
                        
                        
    $list  ftp_get_recursive_paths ( $connection $observer -> dir 1000 );
                        
    $files  = new \ RecursiveIteratorIterator (new \ RecursiveArrayIterator ( $list ));
                        \
    Cli :: write ( "<pre>" . print_r ( $list true ). "</pre>" );
                        foreach(
    $files  as  $file ) {
                            \
    Cli :: write ( 'found file -> ' . $file );
                        }
                        
                    
                    }
                    
                }
                
                
            }
                       
        }
    zufällig ne idee woran das liegen könnte?
     
  2. #2 12. August 2015
    AW: Recursive Datei Auflistung FTP

    PHP:
    if(@ ftp_chdir ( $conn $f )){
        
    ftp_get_recursive_paths ( $conn $f $max_level - 1 ); 
    Du verwirfst das Ergebnis.
     
  3. #3 13. August 2015
    AW: Recursive Datei Auflistung FTP

    Erklärt glaube ich nicht wieso der Code im Controller funktioniert wie gewünscht im Task / Cronjob aber nicht. Oder doch?

    Augen im Kopf haben hilft ungemein. Eben nochmal den Code überflogen und gesehen das es nicht der gleiche ist.

    Danke für den Wink mit dem Zaunpfahl ...
     

  4. Videos zum Thema
    Video Script
Die Seite wird geladen...

Ähnliche Themen mit den Stichworten: Recursive Datei Auflistung

  1. Batch Datei für regelmäßige Tastenkombi
    muhhaha, 9. August 2019 , im Forum: Windows
    Antworten:
    8
    Aufrufe:
    3.808
  2. Datenrettung Tools: gelöschte Dateien wiederherstellen
    Carla Columna, 7. September 2018 , im Forum: Windows Tutorials
    Antworten:
    1
    Aufrufe:
    4.895
  3. ics Dateien mergen
    romestylez, 11. März 2018 , im Forum: Programmierung & Entwicklung
    Antworten:
    1
    Aufrufe:
    6.259
  4. [PHP] Recursive list FTP files
    badloader, 22. Oktober 2012 , im Forum: Webentwicklung
    Antworten:
    4
    Aufrufe:
    1.312
  5. datein recursive mit bestimmten Muster löschen
    Decryptor, 18. Januar 2009 , im Forum: Linux & BSD
    Antworten:
    3
    Aufrufe:
    531