Anzeige

[PHP] zippen großer Dateien

[PHP] zippen großer Dateien | PSD-Tutorials.de

Erstellt von jens260181, 05.02.2009.

  1. jens260181

    jens260181 Schmarotzer

    Dabei seit:
    29.05.2006
    Beiträge:
    82
    Geschlecht:
    männlich
    Ort:
    Quellcode
    Software:
    Notepad
    [PHP] zippen großer Dateien
    Hallo,

    ich nutze ein Script zum zippen von Dateien. das funktioniert auch soweit ganz gut. Nur wird die zu zippende Datei zu groß (ab 20 MB ungefähr), wird diese nicht mehr gezippt und das Script bricht ab.

    Gibt es eine Möglichkeit auch Dateien zu zippen, die 50 MB und größer sind?
     
    #1      
  2. Duddle

    Duddle Posting-Frequenz: 14µHz

    Dabei seit:
    03.02.2006
    Beiträge:
    3.864
    Geschlecht:
    männlich
    Ort:
    Dresden
    [PHP] zippen großer Dateien
    AW:
    PHP:
    1.  zippen großer Dateien[/b]
    2.  
    3. Das Script wird wohl abbrechen, weil die Laufzeit von PHP-Scripten in der Regel begrenzt ist. Du musst also entweder die Serverkonfiguration entsprechend ändern oder im Script mit [URL="http://de2.php.net/set_time_limit"]set_time_limit()[/URL] die maximale Ausführungszeit ändern.
    4.  
    5.  
    6. Duddle
     
    #2      
  3. stroyer

    stroyer Aktives Mitglied

    Dabei seit:
    03.01.2009
    Beiträge:
    567
    [PHP] zippen großer Dateien
    AW:
    PHP:
    1.  zippen großer Dateien[/b]
    2.  
    3. Beziehungsweise wenn die Website auf einem freien Webserver gehostet ist wirst du das Problem haben, dass du das Time-Limit nicht ändern kannst. Sprich dann gibt es eigentlich keine Möglichkeit so große Archiv-Operationen auszuführen.
     
    #3      
  4. jens260181

    jens260181 Schmarotzer

    Dabei seit:
    29.05.2006
    Beiträge:
    82
    Geschlecht:
    männlich
    Ort:
    Quellcode
    Software:
    Notepad
    [PHP] zippen großer Dateien
    AW:
    PHP:
    1.  zippen großer Dateien[/b]
    2.  
    3. zum Webspace sage ich nur ARCOR.
    4.  
    5. Naja, da es sich um Dokumente handelt, habe ich diese jetzt als PDF gespeichert. Somit ist die Größe nur noch 1/3 vom Original.
    6.  
    7. Das Zeitlimit geht im SAFE-MODE nicht. Das ist neben ARCOR das nächste Problem.
    8.  
    9. Danke für die Antworten
     
    #4      
  5. stroyer

    stroyer Aktives Mitglied

    Dabei seit:
    03.01.2009
    Beiträge:
    567
    [PHP] zippen großer Dateien
    AW:
    PHP:
    1.  zippen großer Dateien[/b]
    2.  
    3. Bei den meisten Webspaces ist es so, dass du bestimmte Einstellungen (z.B. maximale Scriptlaufzeit) nicht ändern darfst.
     
    #5      
  6. CIX88

    CIX88 Aktives Mitglied

    Dabei seit:
    06.04.2006
    Beiträge:
    814
    Geschlecht:
    männlich
    Ort:
    GR
    [PHP] zippen großer Dateien
    AW:
    PHP:
    1.  zippen großer Dateien[/b]
    2.  
    3. Zippen von großen Dateien ist eher in Verbindung mit exec() sinnvoll, setzt natürlich voraus das exec() auch verfügbar ist. Alles was über PHP läuft ist da nicht geeignet.
     
    #6      
  7. stroyer

    stroyer Aktives Mitglied

    Dabei seit:
    03.01.2009
    Beiträge:
    567
    [PHP] zippen großer Dateien
    AW:
    PHP:
    1.  zippen großer Dateien[/b]
    2.  
    3. [quote="jens260181, post: 856398"]zum Webspace sage ich nur ARCOR.[/quote]
    4. Und ich vermute, dass dort zu 99,99%iger Wahrscheinlichkeit exec() deaktiviert ist. Soher gesehen ist die einzige Variante, dass du einen Server findest, wo dir sei es durch erweiterungen oder keinem Zeitlimit (ist wegen Endlosschleifen problematisch), sei es durch OS-Programme, die Möglichkeit zum schnellen Zippen großer Dateimengen bereit steht.
     
    #7      
  8. CIX88

    CIX88 Aktives Mitglied

    Dabei seit:
    06.04.2006
    Beiträge:
    814
    Geschlecht:
    männlich
    Ort:
    GR
    [PHP] zippen großer Dateien
    AW:
    PHP:
    1.  zippen großer Dateien[/b]
    2.  
    3. Ich glaube noch nicht einmal an das Zeitlimit. Wird aber sicherlich auch eine Rolle spielen. Aber solange wie das ZIP-File noch nicht fertig erstellt ist, wird alles im RAM zwischengespeichert -> memory_limit
    4. Wenn er zum zippen exec() & Co nicht benutzt, kommt sicher eine PHP-Klasse zum Einsatz, und die buffert erstmal alles - ist so meine Vermutung. Und wenn ich dann etwas von „ab 20 MB” und Arcor lese, dann bestätigt das meine Vermutung.
     
    #8      
  9. stroyer

    stroyer Aktives Mitglied

    Dabei seit:
    03.01.2009
    Beiträge:
    567
    [PHP] zippen großer Dateien
    AW:
    PHP:
    1.  zippen großer Dateien[/b]
    2.  
    3. Da hast du recht. Bei kostenlosen Webservern liegt das Limit bei ~8MB.
    4. Aber vielleicht ginge es, wenn man die Datei vor dem Zippen zerstückelt. Inwiefern die Idee realisierbar ist/sein kann, hängt wieder genau vom Webserver ab.
     
    #9      
  10. CIX88

    CIX88 Aktives Mitglied

    Dabei seit:
    06.04.2006
    Beiträge:
    814
    Geschlecht:
    männlich
    Ort:
    GR
    [PHP] zippen großer Dateien
    AW:
    PHP:
    1.  zippen großer Dateien[/b]
    2.  
    3. Hmmm, naja bei solchen Fragen ist es lieber zu wissen, wie diese ZIP-Dateien erstellt werden. Dazu finde ich hier keinerlei genauen Angaben :( Nun ich habe hier auch eine PHP-Klasse für ZIP, welche aber die Dateien bzw. die Inhalte in einen Buffer schreibt bevor das endgültige Zip-File erstellt wird. Und wenn dann 30MB im Buffer liegen, dann würde das ähnliche Effekte, wie oben beschrieben, auch verursachen.
    4.  
    5. Naja, letztlich gibt es nur die Möglicheiten:
    6.  
    7. - auf das zippen verzichten
    8. - richtigen Server suchen
    9.  
    10. und beim letzten könnte man mit:
    11.  
    12. exec('zip -r zip_name dateien);
    13.  
    14. den PHP-Umweg weglassen.
     
    Zuletzt bearbeitet: 05.02.2009
    #10      
  11. stroyer

    stroyer Aktives Mitglied

    Dabei seit:
    03.01.2009
    Beiträge:
    567
    [PHP] zippen großer Dateien
    AW:
    PHP:
    1.  zippen großer Dateien[/b]
    2.  
    3. Oder nur so viele Dateien in ein zip stecken, dass es sich platzmäßig im RAM ausgeht oder wenn die Dateien zu groß sind per Stream zerstückeln und dann am Computer zusammensetzen.
     
    #11      
x
×
×