Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] FTP:An Datei anhängen workarround

Einklappen

Neue Werbung 2019

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

  • [Erledigt] FTP:An Datei anhängen workarround

    Also ich habe da ein kleines Problem.
    Ich möchte via FTP etwas an eine Datei auf dem entfernten Gerät anhängen aber auf einigen Servern ist das nicht erlaubt und führt zum Fehler:"PHP FTP Error: 451 - Append/Restart not permitted".
    Naja eigentlich nicht so schlimm dann läd man sie halt runter, verändert sie und läd sie dann wieder hoch. Solange genug Platz vorhanden ist kein Problem aber genau der Fehlt mir, die Datei ist riesig und mein Platz winzig.

    Ich suche also nach einer Möglichkeit bei der ich etwas an eine Datei anhängen kann ohne die üblichen append Befehle und auch ohne eine lokale Kopie anzulegen.

    Ich dachte dabei an ein Konstrukt bei dem ich 2 Datei-Zeiger anlege, einen zum schreiben einer neuen Datei und einen zum lesen der alten Datei. Dann bastel ich mir eine Art Pipe mit dem ich das aus der alten Datei gelesene gleich in die neue hinein schreibe und am Ende halt noch was anhänge. Dabei müsste ich dann ja nur platz für einen Buffer aufbringen was möglich wäre.

    Die große Frage ist jetzt wie das in PHP geht und wenn das nativ in PHP nicht möglich ist wie man selbst gebastelten C-Code in PHP immigriert.

    Alle die mit dem Typischen "davon hab ich noch nie gehört das geht nicht" antworten möchte wende sich bitte an "wie man selbst gebastelten C-Code in PHP immigriert" als Fragestellung und antworte darauf.


  • #2
    Du kommst gar nicht drum rum die ganze Datei zwischenzuspeichern. Du kannst nicht aus der Datei lesen und gleichzeitig schreiben. Wenn überhaupt wäre sowas nur denkbar wenn die Zieldatei eine andere ist. Dann könntest du zwei Verbindungen aufbauen, mit der einen liest du stückenweise ein mit der anderen schreibst du stückenweise.

    Kommentar


    • #3
      Japp nicht umsonst habe ich geschrieben das die Zeiger auf eine alte und eine neue Datei zeigen das fopen() mit w meine die Datei plättet ist mir nämlich klar. Man kann die neue Datei hinterher ja in die alte umbenennen.

      Kommentar


      • #4
        Das mit der neuen Datei habe ich überlesen...

        PHP-Code:
        $src_fp fopen('ftp://...@host/src.dat''r');
        $dst_fp fopen('ftp://...@host/dst.dat''w');

        while (!
        feof($src_fp)) {
             
        fwrite($dst_fpfread($src_fp8192));
        }

        fwrite($dst_fp'dein anhängsel');

        fclose($src_fp);
        fclose($dst_fp); 

        Kommentar


        • #5
          Oh man jetzt könnte ich mir in den Arsch beißen da hätte ich auch selber mal drauf kommen können.
          Aber mal ein herzliches Danke für die Hilfe.

          Kommentar

          Lädt...
          X