Ankündigung

Einklappen
Keine Ankündigung bisher.

Dateien an ein .gz Datei anhängen.

Einklappen

Neue Werbung 2019

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

  • Dateien an ein .gz Datei anhängen.

    Gibt es eine Möglichkeit, an gz Dateien Daten anzuhängen ähnlich wie fopen('filename', 'a+'); ??


    Währe für mich interresant, da ich an einer Zugriffsstatistik arbeite.
    [B]Mfg Tomtaz[/B]
    [I]"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..." [/I]:!::shock:

  • #2
    Hallo,

    wenn ich gz richtig verstanden habe, dann ist die Archivierung nur für jeweils eine Datei. Das heißt: 1 gz-Datei = 1 komprimierte Datei im "Archiv". Daher werden so häufig tar-Dateien mittels gz gepackt, da diese einfach nur mehrere Dateien ohne kompression in einer Datei speichern. Wenn du also mehrere Dateien in ein (tar).gz Archiv packen möchtest, nur über den Umweg über tar o.Ä.

    MfG Matthias

    Kommentar


    • #3
      Mit einer geeigneten Klasse oder einem implementierten Wrapper kannst du bestimmt fopen('gz://myfile.gz.***') verwenden. Integriert ist das meines Wissens aber in PHP nicht.

      Kommentar


      • #4
        Hallo, und vielen Dank erst mal für die Antworten.

        Mir ist vollkommen bewust das es in ein .gz Archiv nur eine Datei geben kann. Ich brauche auch nur eine Datei. Ich will die Zugangsstatistiken darin ablegen, da nach einiger Zeit die Dateien (wenn sie nicht komprimiert wurden) sehr groß sind. Ich möchte einfach nach jedem aufruf, dass die gz. Datei geöffnet wird, und dann einfach am ende hinzugefügt wird.

        Momentan geh ich den umständlichen weg von:
        PHP-Code:
        <?php

        //
        // Create Save Line
        //
        $save_line '';
        $save_line $_SERVER['REMOUTE_ADDR'] . '#' time() . "\n"// etc...

        //
        // Save into file
        //
        $tmp_file = array();
        $tmp_file gzfile'./statistic/log.gz' );

        //
        // Open File
        //
        if ( $f gzopen'./statistic/log.gz''w9' ) )
        {
          
        gzwrite$fimplode''$tmp_file ) );

          
        //
          // Save New Line
          //
          
        gzwrite$f$save_line );
          
          
        gzclose$f );
        }

        //
        // End
        //
        Da das mit implode viel Speicher frisst, und etwas länger dauert, suche ich nun nach einer möglichkeit dies so ähnlich zu managen wie fopen mit Modus a+ (das die Daten am Ende einer Datei anhängt... )

        Versteht Ihr?
        [B]Mfg Tomtaz[/B]
        [I]"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..." [/I]:!::shock:

        Kommentar


        • #5
          Hallo tomaz,

          das funktioniert mit gzip-Dateien nicht. Hier solltest du eine andere Lösung suchen. Im LINUX-Umfeld gibt es für diese Aufgaben fertige Programme wie logrotate, die man nur noch konfigurieren muss. Solltest du darauf keinen Einfluss haben, rate ich dir die Log-Dateien plain wegzuschreiben (fopen('file','a+')) und in einem Cronjob zeitgesteuert zu packen.
          Viele Grüße,
          Dr.E.

          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          1. Think about software design [B]before[/B] you start to write code!
          2. Discuss and review it together with [B]experts[/B]!
          3. Choose [B]good[/B] tools (-> [URL="http://adventure-php-framework.org/Seite/088-Why-APF"]Adventure PHP Framework (APF)[/URL][URL="http://adventure-php-framework.org"][/URL])!
          4. Write [I][B]clean and reusable[/B][/I] software only!
          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

          Kommentar


          • #6
            Ist Schade, dann muss ich wohl bei der alten Variante bleiben.

            Drotzdem danke.
            [B]Mfg Tomtaz[/B]
            [I]"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..." [/I]:!::shock:

            Kommentar


            • #7
              gzopen("Dateiname.gz", "ab") funktioniert sehr gut.
              Die komprimierten Daten sind bei gzip in Blöcke eingeteilt. Neue Blöcke können einfach am Ende angehängt werden.

              Kommentar


              • #8
                Zitat von Schnulli
                gzopen("Dateiname.gz", "ab") funktioniert sehr gut.
                Die komprimierten Daten sind bei gzip in Blöcke eingeteilt. Neue Blöcke können einfach am Ende angehängt werden.
                Das ist ein guter Tip, muss ich mal ausprobieren...
                [B]Mfg Tomtaz[/B]
                [I]"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..." [/I]:!::shock:

                Kommentar


                • #9
                  ... wieder mal was gelernt. Auf der Manpage (http://de2.php.net/manual/en/function.gzopen.php) steht davon aber nichts und in den Header-Dateien der ZLIB habe ich nicht nachgesehen.

                  Ich bin aber trotzdem davon überzeugt, dass das hier verwendete Konzept krankt, nicht die Umsetzung.
                  Viele Grüße,
                  Dr.E.

                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                  1. Think about software design [B]before[/B] you start to write code!
                  2. Discuss and review it together with [B]experts[/B]!
                  3. Choose [B]good[/B] tools (-> [URL="http://adventure-php-framework.org/Seite/088-Why-APF"]Adventure PHP Framework (APF)[/URL][URL="http://adventure-php-framework.org"][/URL])!
                  4. Write [I][B]clean and reusable[/B][/I] software only!
                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                  Kommentar


                  • #10
                    Zitat von dr.e.
                    ...
                    Ich bin aber trotzdem davon überzeugt, dass das hier verwendete Konzept krankt, nicht die Umsetzung.
                    Was meinst du damit, wie soll ich das verstehen?
                    [B]Mfg Tomtaz[/B]
                    [I]"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..." [/I]:!::shock:

                    Kommentar


                    • #11
                      Hallo tomaz,

                      ich beziehe das auf folgende Aussage:

                      Ich will die Zugangsstatistiken darin ablegen, da nach einiger Zeit die Dateien (wenn sie nicht komprimiert wurden) sehr groß sind. Ich möchte einfach nach jedem aufruf, dass die gz. Datei geöffnet wird, und dann einfach am ende hinzugefügt wird.
                      Das ist eine performancemäßige Schweinerei , da gzip-Dateien lesen und schreiben aufwändiger ist als text/plain-Dateien. Ich würde hier entweder die Logs in Text-Dateien wegschreiben und

                      a) anschließend in eine MySQL zum Auswerten pumpen
                      b) per Cronjob (z.B. logrotate) packen

                      Alles andere kann dir unter Umständen die Performance des Seitenaufrufs verschlechtern.
                      Viele Grüße,
                      Dr.E.

                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                      1. Think about software design [B]before[/B] you start to write code!
                      2. Discuss and review it together with [B]experts[/B]!
                      3. Choose [B]good[/B] tools (-> [URL="http://adventure-php-framework.org/Seite/088-Why-APF"]Adventure PHP Framework (APF)[/URL][URL="http://adventure-php-framework.org"][/URL])!
                      4. Write [I][B]clean and reusable[/B][/I] software only!
                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                      Kommentar


                      • #12
                        Zitat von dr.e.
                        Hallo tomaz,

                        ich beziehe das auf folgende Aussage:

                        Ich will die Zugangsstatistiken darin ablegen, da nach einiger Zeit die Dateien (wenn sie nicht komprimiert wurden) sehr groß sind. Ich möchte einfach nach jedem aufruf, dass die gz. Datei geöffnet wird, und dann einfach am ende hinzugefügt wird.
                        Das ist eine performancemäßige Schweinerei , da gzip-Dateien lesen und schreiben aufwändiger ist als text/plain-Dateien. Ich würde hier entweder die Logs in Text-Dateien wegschreiben und

                        a) anschließend in eine MySQL zum Auswerten pumpen
                        b) per Cronjob (z.B. logrotate) packen

                        Alles andere kann dir unter Umständen die Performance des Seitenaufrufs verschlechtern.
                        Ok, naja gut, werd ich eben nur Sicherungen in .gz anfertigen.

                        Danke für den Tipp!
                        [B]Mfg Tomtaz[/B]
                        [I]"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..." [/I]:!::shock:

                        Kommentar

                        Lädt...
                        X