php copy()

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Moin Männer,

    habe mal eine frage was die copy() funktion von php angeht.

    Also ich habe einen Ordner, indem liegt die index.php. Diese index wird per cronjob aufgerufen und liest alle Dateien des (übergeordneten)Ordners "neue_exporte" aus und speichert die in einem array.

    Diese daten liegen in XML format vor. Ich bearbeite sie mit simplexml und speichere alle benötigten Werte in die db.

    Jetzt soll die index, nachdem die dateien bearbeitet und die Werte zur DB hinzugefügt wurden, die bearbeiteten Dateien in den (übergeordnetetn)Ordner "verarbeitete_exports" kopieren und die bearbeiteten Daten aus "neue_exporte" löschen.

    Ich komme mit der Copy funktion einfach nicht zurecht, ich schaffe es nich, dem scheissding *sorry* mitzuteilen, das die sourcefile nicht im selben ordner wie die index.php sondern im übergeordneten Ordner "neue_exporte".

    mein code sieht bisher so aus:

    Quellcode

    1. /* erstes verzeichnis wird geöffnet */
    2. $exports = array();
    3. $verzeichnis = opendir("neue_exports/");
    4. $i = 0;
    5. while($eintrag = readdir($verzeichnis))
    6. {
    7. $exports[$i] = $eintrag;
    8. $i++;
    9. }
    10. //Das erste Arrayelement wird gelöscht (ist ein .)
    11. array_shift($exports);
    12. //Das zweite Arrayelement wird gelöscht (ist ein ..)
    13. array_shift($exports);
    14. $verzeichnis2 = "verarbeitete_exports/";
    15. $wieviel = count($exports);
    16. for($i=0;$i<=$wieviel;$i++)
    17. {
    18. if(!copy($exports[$i], $verzeichnis2))
    19. die("Unmöglich!");
    20. }
    Alles anzeigen


    füge ich bei $exports[$i] vorher das verzeichnis ei, frisst er das nicht...

    danke schonmal

    grüße
    Timo
    ----[Blockierte Grafik: http://www.smilie-harvester.de/smilies/Alltag/putzen.gif] Nein ich bin nicht die Signatur, ich Putz hier nur ---
  • eseL schrieb:

    Moin Männer

    Und was ist mit den Frauen? Oder meinst du es gibt hier keine? :)

    Ich glaube du hast dich da mit den Verzeichnissen etwas verhaspelt kannst du mal deine Ordnerstruktur posten, dann ist das etwas leichter zu verstehen :)

    so long
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert, der letzte Netzknoten kommerzialisiert, die letzte Newsgroup moderiert wird, werdet Ihr merken, dass man mit Geld allein nicht programmieren kann.
  • Moin Männer/Frauen ;)

    Also hier die Ordnerstruktur

    [Blockierte Grafik: http://www.bilder-space.de/upload/19.11zYKJzCk3rnV8isf.jpg]

    Also die index soll aus "neue_exporte" die files in "alte_exporte" kopieren, sowie die kopierten files aus "neue_exporte" löschen


    grüße
    ----[Blockierte Grafik: http://www.smilie-harvester.de/smilies/Alltag/putzen.gif] Nein ich bin nicht die Signatur, ich Putz hier nur ---
  • Ok habs nun folgendermaßen gelöst:

    Quellcode

    1. /* erstes verzeichnis wird geöffnet */
    2. $exports = array();
    3. $verzeichnis = opendir("neue_exports/");
    4. $i = 0;
    5. while($eintrag = readdir($verzeichnis))
    6. {
    7. $exports[$i] = $eintrag;
    8. $i++;
    9. }
    10. //Das erste Arrayelement wird gelöscht (ist ein .)
    11. array_shift($exports);
    12. //Das zweite Arrayelement wird gelöscht (ist ein ..)
    13. array_shift($exports);
    14. $wieviel = count($exports);
    15. //++++++++++KOPIEREN DER DATEI INS ANDERE VERZEICHNIS+++++++++
    16. $copy = array();
    17. for($i=0;$i<=$wieviel;$i++)
    18. {
    19. //wenn kopiervorgang erfolgreich, schreibe dateinamen in copy array
    20. if(@copy('neue_exports/' . $exports[$i], 'verarbeitete_exports/' . $exports[$i]))
    21. {
    22. $copy[$i] = $exports[$i];
    23. }
    24. }
    25. //++++++++++LÖSCHEN DER KOPIERTEN DATEIEN++++++++++
    26. //das array der erfolgreich kopierten Daten wird durchgezählt
    27. $wieviel2 = count($copy);
    28. //die Daten werden gelöscht
    29. for($i=0; $i<=$wieviel2; $i++)
    30. {
    31. @unlink('neue_exports/' . $copy[$i]);
    32. }
    Alles anzeigen


    wollte das löschen zuerst über das Datum der letzten Änderung machen, habe aber komischerweise mit touch() (aktualisieren der letzen änderun) immer nen access denied bekommen..

    Naja dann so

    grüße

    Timo
    ----[Blockierte Grafik: http://www.smilie-harvester.de/smilies/Alltag/putzen.gif] Nein ich bin nicht die Signatur, ich Putz hier nur ---