Simone: Struktur Test *.gz per php

HI

Wie kann ich eine Datei (.gz) per Php testen ob sie richtig erstellt wurde?

Ich erstelle alle 12h automatisch .gz Datein und mußte mit erstaunen festellen das die letzte Datei einen Fehler beim entpacken produziert.

Jetzt möchte ich das Format bzw. die Datei auf Fehler testen um dieses Problem auszuschließen und erst dann das Orginal (letzte Fassung) überschreiben bzw. ersetzen.

ein "is_readable" für *.gz  ;0)

Danke Simone

  1. Moin!

    ein "is_readable" für *.gz  ;0)

    "gzip" is das Programm "-t" die Option für das Testen.

    'gzip -t datei.gz; echo $?' liefert dann ein:

    0- kein Fehler
    oder eine Zahl für den Fehler zurück.

    Du baust also bestens ein:

    <?php
    $intError=gzip -t datei.gz; echo $?;

    Da stehen Backticks!

    ?>

    in Dein PHP-Skript ein. Danach prüfst Du $intError

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
    1. HI,

      Das ist sehr interessant!

      $intError=gzip -t datei.gz; echo $?;
      liefert eine 1 ( --fast compress faster)

      Dennoch möchte ich keine Browserausgabe erzeugen.
      wie bekomme ich den Rückgabewert ohne Browserausgabe (echo) in die Variable $intError?

      Ok zur Not könnte ich die ganze Sache puffern wobei ich diesen Puffer schon für andere Fehlermeldungen nutze.

      ob_start();

      Danke Simone

      1. Moin!

        $intError=gzip -t datei.gz; echo $?;
        liefert eine 1 ( --fast compress faster)

        Dennoch möchte ich keine Browserausgabe erzeugen.
        wie bekomme ich den Rückgabewert ohne Browserausgabe (echo) in die Variable $intError?

        Bei mir erzeugt das echo erwartungsgenäß keine Browserausgabe.

        Hier der life-Test:

        fastix@trainer:~> cat > test.php
        <?php
        $test=gzip -t 2005-07-06\_1-35.sql.gz;  echo $?;
        echo "<hr>";
        echo $test;
        ?>

        fastix@trainer:~> php test.php
        Content-type: text/html
        X-Powered-By: PHP/4.3.3

        <hr>0
        fastix@trainer:~>

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix®

        --
        Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
        1. HI fastix

          Vielleicht stehe ich auf einen falschen Bein ;o)

          "echo" ist für mich eine Sprach-Konstrukt der am Browser eine Ausgabe erzeugt?

          $test=gzip -t 2005-07-06\_1-35.sql.gz;  echo $?;

          ^^^^^

          Wie auch immer, das Skript erzeuge-gz.php soll ohne Browserausgabe eine *.gz erzeugen und wird in die Index.php includiert.

          friedfertig Grinse zurück
          Simone

          1. Moin!

            "echo" ist für mich eine Sprach-Konstrukt der am Browser eine Ausgabe erzeugt?

            Es flötet die Shell zu PHP, das tut dem Apache und dem Browser nicht weh.

            Was hindert Dich daran, mein Beispielskript zu probieren? Was hindert Dich daran nachzulesen, was Backticks bewirken? Es handelt sich dabei um einen _grundlegenden_ Unterschied zum system()- Aufruf.

            "echo" ist auch eine Anweisung der Shell. Genau die wird hier aufgerufen. Alle Ausgaben nach stdout landen in der Variablen links der in die Backticks eingeschlossenen Befehlssequenz.

            MFFG (Mit freundlich- friedfertigem Grinsen)

            fastix®

            --
            Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
            1. HI,

              Es flötet die Simone vorm schlafen gehen schnell, der fastix ist im Kopfe hell!

              ....
              Was hindert Dich daran nachzulesen, was Backticks bewirken? Es handelt sich dabei um einen _grundlegenden_ Unterschied zum system()-Aufruf.
              ....

              Backticks sind für mich eine neue Dimension meiner bescheidenen Programmierkenntnisse.
              Ja, am Rande gab es dort irgendwo mal ein 'Ping' in einem Skript von mir. Dieses Ping war einfach da... aber was... und wie es das macht sehe ich mir Morgen an.

              Nochmals danke fastix!

              Simone

              1. Moin!

                Nochmals danke fastix!

                Noch nicht ganz: Ich habe gerade gesehen, dass womöglich stderr dennoch ausgegeben wird. Leite das auf der Shell schon um:

                <?php
                $test=gzip -t 2005-07-06\_1-35.sql.gz 2> /dev/null;  echo $?;
                echo "<hr>";
                echo $test;
                ?>

                MFFG (Mit freundlich- friedfertigem Grinsen)

                fastix®

                --
                Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development