problem mit entpacken von *tgz

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

  • problem mit entpacken von *tgz

    Hallo Leute,

    ich bin da vor eine Aufgabe gestellt worden, die mir äußerst kopfzerbrechen bereitet....

    ich hab die suchfunktion eingesetzt aber doch tatsächlich nur ein relavantes ergebnis gefunden, deren antworten mir leider auch keine echte erleuchtung bringen....

    und zwar lade ich per script über FTP files im Format *tgz runter,
    diese müsste ich danach gleich automatisch entpacken.
    in diesem TGZ file befindet sich ein ordner in dem sich viele CSV dateien befinden, die ich anschließen zur auswertung verarbeiten muss...

    das ganze passiert auf einem 1&1 webspace, habe daher leider nicht die möglichkeit für einen Systemcall

    kann mir da jemand mit tips, tuts, klassen oder links auf die sprünge helfen ?? wäre echt spitze

    für hilfe bin ich echt dankbar !
    Coder never die, they just GOSUB without RETURN

    Mein System

  • #2
    Falls dein Hosting >= PHP 5.2 bietet, guck dir mal ZipArchive an.

    Ansonsten gibt's da noch die zip_* Funktionen. Schon probiert?
    Zuletzt geändert von ModestLife; 23.03.2009, 00:39.
    Mein PHP Blog

    Kommentar


    • #3
      google("php tar gz")

      Kommentar


      • #4
        Re: problem mit entpacken von *tgz

        Original geschrieben von ways
        ich bin da vor eine Aufgabe gestellt worden, die mir äußerst kopfzerbrechen bereitet....
        Ich hoffe, du musst damit nicht deine Brötchen verdienen.

        und zwar lade ich per script über FTP files im Format *tgz runter,
        diese müsste ich danach gleich automatisch entpacken.
        Es schadet nicht, erstmal einige Grundlagen zu kennen -- dann fällt die Suche (oder die Wahl der passenden Suchbegriffe) leichter.

        Für solche Archive gibts bspw. das PEAR-Paket File_Archive.

        Eine API-Online-Dokumentation gibts auch.

        Auf Stackoverflow.com findest du ein Beispielskript, was dir zeigt, wie du damit TAR-Archive auslesen kannst.

        Und nur der Vollständigkeit halber: GZIP-komprimierte Dateien handhabt man mit der ZLib-Erweiterung. Die ist aber nur auf Windoze-Systemen serienmäßig dabei. Ob sie auf deinem System dabei ist, findest du wie immer über extension_loaded() oder notfalls auch per phpinfo() heraus.
        Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

        Kommentar


        • #5
          doch, muss mir meine brötchen damit verdienen

          aber hab grad erst ausgelernt und als "junior" fehlt mir natürlich noch der ganze erfahrungsschatz !


          ich danke jedenfalls für die hinweise... mit grundlagen pauken hab ich kein problem... meist eher damit rauszufinden, welche für was die richtigen grundlagen sind
          Coder never die, they just GOSUB without RETURN

          Mein System

          Kommentar


          • #6
            so, nun hab ich mir ja tagelang echt mühe gegeben

            aber irgendwie bekomm ich keine plattformunabhängige scriptlösung hin, mit der ich *tgz files einfach auf nem webserver ohne shell zugriff unter verwendung von php5 standardlibs zum laufen bekomme..

            ich hab nun sogar schon ein paar mal gelesen, dass dies gar nicht geht...

            stimmt das so ?
            Coder never die, they just GOSUB without RETURN

            Mein System

            Kommentar


            • #7
              Original geschrieben von ways
              ich hab nun sogar schon ein paar mal gelesen, dass dies gar nicht geht...

              stimmt das so ?
              Das ist gut möglich! Ich hatte mal eine ähnliche Problemstellung und hab die Suche irgendwann aufgegeben. Kann natürlich trotzdem sein, daß jemand mit einer Menge Zeit schon mal eine native PHP-Implementation von unzip geschrieben hat aber ich wüßte nicht wo.

              Kommentar


              • #8
                kennst denn niemand einen weg, *tgz files auf nem webserver scriptseitig zu entpacken?

                leider komm ich um das problem nich drum herum, wäre nett, wenn da jemand noch nen hinweis hat
                Coder never die, they just GOSUB without RETURN

                Mein System

                Kommentar


                • #9
                  Re: problem mit entpacken von *tgz

                  Original geschrieben von ways
                  das ganze passiert auf einem 1&1 webspace, habe daher leider nicht die möglichkeit für einen Systemcall
                  Du hast die Möglichkeit zu wechseln.

                  Kommentar


                  • #10
                    Mahlzeit!

                    Den Hoster zu wechseln, wenn der nicht in der Lage ist, zlib-Unterstützung anzubieten, ist natürlich auch eine Idee. Eine andere wäre, den Hoster zu bitten, die zlib-Extension einzubinden -- das sollte nicht so schwer sein[1]. Wenn es sich allerdings nur um ein 08-15-Massenhosting-Paket handelt ...

                    Der Witz ist, dass die benötigte DEFLATE/INFLATE-Komprimierung schon mehrfach in jedem PHP-Webhostingpaket vorhanden ist:
                    Der Webserver hat sicher das gzip-Modul eingebaut.
                    Die GDLib in PHP greift auf den gleichen Algorithmus zu, um PNG-Dateien und GD-Daeien zu packen und zu entpacken.
                    Die CURL-Erweiterung kann auch damit umgehen.
                    Leider kann man diese nicht einfach so anzapfen.

                    Einen Notbehelf könnte ich mir noch vorstellen, und der wäre MySQL. Dessen neuere Versionen bieten die Funktionen COMPRESS() und UNCOMPRESS(). Mit letzterer müsste man zlib-komprimierte Binärstrings entpacken können. Darum herum eine Funktion zu stricken, die vor dem Entpacken eventuell nötige Header ergänzt und dann die entpackten Daten zurückliefert, sollte keine so große Herausforderung darstellen.

                    Allerdings muss man auch hier vorher prüfen, ob der MySQL-Server(?) mit zlib-Unterstützung kompiliert wurde. Entsprechende Hinweise finden sich im Erklärungstext zu den Funktionen.

                    Und natürlich sollte man auch nicht vergessen, dass dann Daten erst vom Webserver zum Datenbankserver und von dort wieder zurückgeschickt werden müssen. Nicht besonders effektiv das Ganze ...

                    Deswegen auch meine Frage mit dem Brötchen-Verdienen: Als Knobelaufgabe oder Gehirnjogging in der Freizeit ist sowas sicher geeignet, im Job würde ich meine Zeit aber nur dann damit vertrödeln, wenn der Brötchengeber dafür auch seine Zustimmung gibt.


                    Ähnlich fährst du übrigens mit der Native-PHP-Lösung. Es sollte prinzipiell machbar sein[2], wenigstens das Entpacken nur in PHP nachzubauen. Aber die Geschwindigkeit dürfte nicht berauschend sein. Und dann müsste man immer noch jemanden finden, der den C-Quellcode nach PHP übersetzt.

                    Wer sich "for educational purposes" trotzdem dranwagen will:
                    http://www.zlib.net/ hat den C-Quellcode der zlib. (puff.c dürfte hierbei am interessantesten sein)
                    Auf http://www.jcraft.com/jzlib/ gibts eine native Java-Implementierung.

                    Es gibt auch (native|pure) Implementierungen des Entpack-Algorithmus' in Python und LUA:
                    http://www.paul.sladen.org/projects/pyflate/
                    http://lua-users.org/wiki/ModuleCompressDeflateLua
                    ... und (na klar) in Perl:
                    http://search.cpan.org/~nwclark/Comp...b-Perl/Perl.pm

                    --
                    [1] Ich hab spaßeshalber drei mir bekannte Free-Webspace-Hoster per phpinfo() geprüft. Fazit: ebytenet, kilu und lima-city haben die zlib eingebunden.

                    [2] Einen Entpacker für Lauflängen-komprimierte Pixel-Daten hab ich schon mal in PHP geschrieben. Mit Drumherum (Planar-To-Chunky-Konvertierung und Schreiben in eine GD-Image-Ressource) kam der auf ca. 5 Bilder a 1024x768 Pixel, die er pro Sekunde entpackte. Aber INFLATE ist sicher nicht ganz so einfach zu bauen.
                    Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

                    Kommentar


                    • #11
                      ich hab nun bei 1und1 geschaut:
                      phpinfo

                      demnach is die zlib mit dabei....

                      jetzt muss ich nur noch rausfinden, wie ich die einsetze..
                      Coder never die, they just GOSUB without RETURN

                      Mein System

                      Kommentar


                      • #12
                        okay.. problem dirty gelöst, aber gelöst....
                        da ich in den tgz files nur auf CSV dateien zugreifen will und auch vorher weiß, wie die heissen hab ich es mit hilfer der tar.class.php ausm netz geschafft, die daten in der CSV auszulesen und aufm server als CSV abzulegen !

                        blöd ist nur, dass das script bei 1&1 nich funzt...
                        obwohl ZLIB drauf ist, soweit ich das richtig sehe...

                        local und auf meinem flyhost server läufts prima
                        Coder never die, they just GOSUB without RETURN

                        Mein System

                        Kommentar


                        • #13
                          Nur interessehalber: Um welche tar.class.php handelt es sich? Google scheint da mehrere Versionen von verschiedenen Sites zu kennen (phpclasses.org, drupal, ...).

                          Die zlib-Funktionen (die durch die zlib-Erweiterung bereitgestellt werden) fangen fast alle mit "gz..." an. Welche davon werden in deinem Script verwendet? Oft gibts aber gzdecode() nicht. Dessen Handbuchseite bietet eine Reihe von Alternativen, die meistens klaglos funktionieren.
                          Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

                          Kommentar

                          Lädt...
                          X