php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.09.2008, 15:38  
Erfahrener Benutzer
 
Registriert seit: 14.07.2005
Beiträge: 157
DonTermi
Standard zip - hört bei 55 MB Archivgröße auf Dateien hinzuzufügen

Moin,

ich hab bei uns in der Firma ein automatisches Produktbilderhochladeskript geschrieben. Ich kopiere alle Bilder, die sich seit timestamp xyz geändert haben, in ein export Verzeichnis und dieses will ich zippen, damit ich die ZIP dann auf unseren Webserver hochladen kann. Mein Problem besteht zur Zeit darin, dass bei einer Archivgröße von 55 MB keine Dateien mehr hinzugefügt werden. Die ZIP Funktion addFile gibt ab dort auch ein false zurück.

Kann ich diese Beschränkung irgendwie konfigurieren ?
__________________
[visit Donvelopment.org]
PGP-KeyID: 0xBEC31126]
[Blog:Don's Blog]
DonTermi ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 25.09.2008, 15:42  
PTC
Erfahrener Benutzer
 
Benutzerbild von PTC
 
Registriert seit: 27.10.2007
Beiträge: 1.708
PHP-Kenntnisse:
Anfänger
PTC ist einfach richtig nettPTC ist einfach richtig nettPTC ist einfach richtig nettPTC ist einfach richtig nett
Standard

Welche Extension benutzt du zum zippen?
PTC ist offline   Mit Zitat antworten
Alt 25.09.2008, 15:45  
Erfahrener Benutzer
 
Registriert seit: 14.07.2005
Beiträge: 157
DonTermi
Standard

Die in php dabei ist:

PHP Version 5.2.6-3
System: Linux/Debian (testing)

Zip enabled
Extension Version $Id: php_zip.c,v 1.1.2.43 2008/01/18 00:51:38 pajoye Exp $
Zip version 1.8.11
Libzip version 0.8.0-compatible
__________________
[visit Donvelopment.org]
PGP-KeyID: 0xBEC31126]
[Blog:Don's Blog]
DonTermi ist offline   Mit Zitat antworten
Alt 25.09.2008, 16:00  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

memory_limit oder execution_time vielleicht ?

Vielleicht mal speicherverbrauch und scriptlaufzeit in ne externe log schreiben lassen während das script läuft.


Sollte es Speicher sein:
Machst du noch weitere Dinge mit den Bildern ? Verkleinern oder sowas ? vielleicht irgendwo noch ungenutzte Variablen die du mit unset während dem Ablauf löschen kannst ?
robo47 ist offline   Mit Zitat antworten
Alt 25.09.2008, 16:13  
Erfahrener Benutzer
 
Registriert seit: 14.07.2005
Beiträge: 157
DonTermi
Standard

Das Skript dient nur dazu die aktualisierten Bilder alle in eine zip zu packen. Mehr nicht. Ist einfach komfortabler wenn ich nur eine Datei hochladen brauch

memory_limit ist auf 256 MB angehoben. set_time_limit ist sowieso bei mir auf 0 (unlimited). Selbes Ergebnis.

Kann ich nur noch evtl eins machen:

Nach jedem addFile die Archivgröße prüfen und wenn diese 50 MB erreicht hat eine Funktion in meiner Klasse aufrufen die ein neues Archiv anlegt. Sozusagen ne Art volume Archiv erstelle.
__________________
[visit Donvelopment.org]
PGP-KeyID: 0xBEC31126]
[Blog:Don's Blog]
DonTermi ist offline   Mit Zitat antworten
Alt 25.09.2008, 16:52  
Erfahrener Benutzer
 
Registriert seit: 14.07.2005
Beiträge: 157
DonTermi
Standard

Das war ein glatter Fehlschlag. Kann das Archiv leider nicht wirklich testen, da beim packen eine temporäre Datei benutzt wird und diese natürlich immer anders heißt.
__________________
[visit Donvelopment.org]
PGP-KeyID: 0xBEC31126]
[Blog:Don's Blog]
DonTermi ist offline   Mit Zitat antworten
Alt 25.09.2008, 16:57  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von DonTermi Beitrag anzeigen
Das Skript dient nur dazu die aktualisierten Bilder alle in eine zip zu packen. Mehr nicht. Ist einfach komfortabler wenn ich nur eine Datei hochladen brauch

memory_limit ist auf 256 MB angehoben. set_time_limit ist sowieso bei mir auf 0 (unlimited). Selbes Ergebnis.

Kann ich nur noch evtl eins machen:

Nach jedem addFile die Archivgröße prüfen und wenn diese 50 MB erreicht hat eine Funktion in meiner Klasse aufrufen die ein neues Archiv anlegt. Sozusagen ne Art volume Archiv erstelle.
hmm mal im error-log vom webserver (falls es über den Browser läuft) und php-errorlog (falls aktiviert) schauen ob dort etwas auftaucht, ansonsten vielleicht mal ein bißchen code zeigen.
robo47 ist offline   Mit Zitat antworten
Alt 25.09.2008, 17:11  
Erfahrener Benutzer
 
Registriert seit: 16.07.2005
Beiträge: 1.007
PHP-Kenntnisse:
Fortgeschritten
brian johnson befindet sich auf einem aufstrebenden Ast
Standard

hi,

da gibts nen schönen kommentar im php manual:

Zitat:
Currently the number of files that can be added using addFile to the ZIP archive (until it is closed) is limited by file descriptors limit. This is an easy workaround (on the bug links below you can find another workarounds):
unds präsentiert auch nen workaround:

PHP-Code:
<?php
/** work around file descriptor number limitation (to avoid failure
* upon adding more than typically 253 or 1024 files to ZIP) */
function addFileToZip$zip$path$zipEntryName ) {
// this would fail with status ZIPARCHIVE::ER_OPEN
// after certain number of files is added since
// ZipArchive internally stores the file descriptors of all the
// added files and only on close writes the contents to the ZIP file
// see: http://bugs.php.net/bug.php?id=40494
// and: http://pecl.php.net/bugs/bug.php?id=9443
// return $zip->addFile( $path, $zipEntryName );
$contents file_get_contents$path );
if ( 
$contents === false ) {
return 
false;
}
return 
$zip->addFromString$zipEntryName$contents );
}
__________________
PHP4?!?>>>Aktuelle PHP Version: 5.2.11 || 5.3.0
Suse 11.2 *vorfreude*
brian johnson ist offline   Mit Zitat antworten
Alt 25.09.2008, 17:13  
Erfahrener Benutzer
 
Registriert seit: 14.07.2005
Beiträge: 157
DonTermi
Standard

nope, keine Error Messages.

Der Code ist nicht anderes als

$zip = new ZipArchive;

und dann einfach ne Funktion die ein Verzeichnis rekursiv durchforstet und ein

$zip->addEmptyDir ...
und
$zip->addFile...

macht. Mehr ist das nicht. Diese temporäre Datei habe ich jetzt umgangen. Benutze einfach in der Klasse noch eine zusätzliche Variable für die erfaßten Dateigrößen. Ich addiere einfach die zu packende Dateigröße in diese Variable "current_archive_size" und sobald diese die split_size überschreitet wird eine neues Archiv angelegt. So richtet sich der Split zwar nach der wirklich Dateigröße, aber es funktioniert erstmal.
__________________
[visit Donvelopment.org]
PGP-KeyID: 0xBEC31126]
[Blog:Don's Blog]
DonTermi ist offline   Mit Zitat antworten
Alt 25.09.2008, 17:27  
Erfahrener Benutzer
 
Registriert seit: 14.07.2005
Beiträge: 157
DonTermi
Standard

@brian johnson

Danke. Habe mal addFromString eingebaut statt addFile. Jetzt gehts. Liegt wirklich am file descriptors limit. Bin grad am suchen wo das in der Manual steht
__________________
[visit Donvelopment.org]
PGP-KeyID: 0xBEC31126]
[Blog:Don's Blog]
DonTermi ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PHP Dateien verschlüsseln GSJLink PHP-Fortgeschrittene 2 26.04.2008 12:29
[Logik] Mehrere Dateien als Anhang per Formular versenden PsychoEagle PHP Tipps 2008 2 27.08.2007 08:58
[Erledigt] Dateien aus Verzeichnissen vom Webserver auslesen und linken PHP Tipps 2004 3 08.09.2004 10:07

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php zip addfile limit, dateien zippen 55mb, php zip addfile false, php zip archivgröße, zip 1.8.11, php zip 15 mb, php zip bugs 5.2.6, php zip->addfromstring break, \zip status 11\, zip archivgröße

Alle Zeitangaben in WEZ +1. Es ist jetzt 22:36 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum