Rekursives Kopieren ohne Timeout

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Rekursives Kopieren ohne Timeout

    Hallo Leute,

    ich kopiere per PHP mit einer kleinen Dateiverwaltung recht viele Ordner und Dateien hin und her. Leider geht exec nicht, also greife ich auf eine PHP-Funktion zurück. Bisher klappt alles ganz gut, nur kann ich bestimmt bald warten bis ein timout kommt. Ich habe schon wie verrückt im Netz gesucht, aber leider nichts zum Thema gefunden.

    Ich wollte gern in einem IFrame nach bestimmter Zeit (z.B. 10 Sekunden) eine rekursive Funktion sich selbst aufrufen lassen. Damit Sie immer an der Stelle weitermacht, wo Sie aufgehört hat. Nur wie stelle ich das rekursiv an. Es gehen doch beim Refresh und rekursiver Funktion immer die darüberliegenden Informationen verloren.

    Hier der Codeschnippsel den ich bis jetzt verwende:

    PHP-Code:
    function full_copy$source$target )
        {
            if ( 
    is_dir$source ) )
            {
                @
    mkdir$target );
                
                
    $d dir$source );
                
                while ( 
    FALSE !== ( $entry $d->read() ) ) 
                {
                    if ( 
    $entry == '.' || $entry == '..' )
                    {
                        continue;
                    }
                    
                    
    $Entry $source '/' $entry;            
                    if ( 
    is_dir$Entry ) )
                    {
                        
    full_copy$Entry$target '/' $entry );
                        continue;
                    }
                    
    copy$Entry$target '/' $entry );
                }
                
                
    $d->close();
            }else
            {
                
    copy$source$target );
            }
        } 
    Ich hoffe jemand stand schon mal vor dem Problem und kann mir bei der Lösung helfen.

    10000 Dank!

  • #2
    Du müßtest am Anfang der Operation eine Jobdatei (oder -Sessionvariable) erstellen, und jedes erledigte "To-Do" sofort nach jeder Operation abhaken und speichern. Das verlangsamt das ganze natürlich nochmal erheblich, aber ein besserer Weg fällt mir nicht ein.

    Wenn Du natürlich schon beim Erstellen der Jobliste einen Timeout kriegst, wirds richtig knifflig.

    Es würde mich nciht wundern, wenn es sowas zumindest in Ansätzen nicht schon irgendwo gibt. Hab aber auf ähnlichen Suchen noch nie was gefunden.

    Kommentar


    • #3
      set_time_limit + ignore_user_abort ?!

      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
      Wie man Fragen richtig stellt

      Kommentar


      • #4
        danke erstmal für die tips... set_time_limit schluckt der server leider auch nicht....

        Kommentar


        • #5
          Schreib dem Support, dass du das brauchst.

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar

          Lädt...
          X