php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 16-08-2007, 22:41
sypr0
 Registrierter Benutzer
Links : Onlinestatus : sypr0 ist offline
Registriert seit: Feb 2007
Beiträge: 167
sypr0 ist zur Zeit noch ein unbeschriebenes Blatt
Standard Zip :: Memory_limit

hi ,
folgendes Szenario:

Ich lade eine 400kb zip Datei mit 5 Bildern à ca. 80kb auf meinen Server.
Danach wird diese entpackt und aus den Bildern werden Thumbs gemacht.

Dann erscheint Fehlermeldúng, da eins der Bilder eine sehr hohe auflösung hat.
Fatal error: Allowed memory size of 47185920 bytes exhausted(tried to allocate 10584 bytes)


Kurze Frage:
1) Wie unterdrücke ich die Fehlermeldung und bringe statt dessen ne andere von mir erstellte( wenns nich zu kompliziert is, dann wärs nett, wenn man mir das direkt im Forum erklärt, ansonsten bin ich für Links dankbar die ERROR Handling ausführlich und verständlich behandeln)

2) Kann ich irgendwie abfragen wie viel resourcen verbraucht werden - also mir einen Wert in ne Variable schreiben lassen

Geändert von sypr0 (16-08-2007 um 23:01 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 17-08-2007, 00:01
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

1) ist im manual ganz gut erklärt alles. finde aber lieber die stelle, die den fehler verursacht und korrigiere sie. 400 kb ist jetzt nicht so die welt, dass es in ordnung wäre, dass man dabei fehler produziert. ich tippe darauf, dass irgendwelche resourcen nicht freigegeben werden.

2) ja (steht im manual, einfach mal suchen), aber wofür? fehler beheben ist immer besser, als umgehen.
Mit Zitat antworten
  #3 (permalink)  
Alt 17-08-2007, 15:49
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard Re: Zip :: Memory_limit

Zitat:
Allowed memory size of 47185920 bytes exhausted(tried to allocate 10584 bytes)
Hmm, die 45mb kommen aber bestimmt nicht durch deine 400k zustande! Da musst du, wie penizillin schon gesagt hat, irgendwelche resourcen nicht freigegeben haben!
Mit Zitat antworten
  #4 (permalink)  
Alt 17-08-2007, 15:56
sypr0
 Registrierter Benutzer
Links : Onlinestatus : sypr0 ist offline
Registriert seit: Feb 2007
Beiträge: 167
sypr0 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
irgendwelche Ressourcen
kannst mir das bitte bisschen genauer erläutern ? So hilft es mir nämlich leider nicht weiter, wo sollt ich mal nachschaun?(hab php.ini eigentlich so wie se mit XAMPP Lite geliefert wird gelassen, ausser dass ich Memory size auf 45 MB, upload Size auf 45 MB gesetzt hab.
Mit Zitat antworten
  #5 (permalink)  
Alt 17-08-2007, 17:37
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Was macht dein Script? Liste mal alle Punkte auf.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #6 (permalink)  
Alt 17-08-2007, 17:46
Poscht
 Newbie
Links : Onlinestatus : Poscht ist offline
Registriert seit: Feb 2007
Beiträge: 31
Poscht ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: Re: Zip :: Memory_limit

Zitat:
Original geschrieben von PHP-Desaster
Hmm, die 45mb kommen aber bestimmt nicht durch deine 400k zustande! Da musst du, wie penizillin schon gesagt hat, irgendwelche resourcen nicht freigegeben haben!
Für mich sieht das nach einer hübschen Endlosschleife aus, die beim Erreichen des Memory Limits mit der oben genannten Fehlermeldung beendet wird.

Gruß Poscht
Mit Zitat antworten
  #7 (permalink)  
Alt 17-08-2007, 17:59
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von penizillin
1) ist im manual ganz gut erklärt alles. finde aber lieber die stelle, die den fehler verursacht und korrigiere sie.
es handelt sich hier um einen fatal error, ist mir neu, dass man die abfangen kann.

Zitat:
Original geschrieben von sypr0
Kann ich irgendwie abfragen wie viel resourcen verbraucht werden - also mir einen Wert in ne Variable schreiben lassen
mit memory_get_usage() kannst du den speicherverbrauch ermitteln.
Mit Zitat antworten
  #8 (permalink)  
Alt 17-08-2007, 18:22
sypr0
 Registrierter Benutzer
Links : Onlinestatus : sypr0 ist offline
Registriert seit: Feb 2007
Beiträge: 167
sypr0 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Für mich sieht das nach einer hübschen Endlosschleife aus, die beim Erreichen des Memory Limits mit der oben genannten Fehlermeldung beendet wird.
Nein, keine Endlosschleife, weil es nur bei Bildern mit einer Auflösung von mehr als 2500 x 3000 vorkommt. Aber das ist ja nicht das Thema dieses threads.

Es ist normal, dass viel Resourcen verbraucht werden bei nem Bild mit 100kb und ner auflösung von 2646 x 3742, zumindest wurde das schon einmal hier geklärt und ausdiskutiert.


Zitat:
mit memory_get_usage() kannst du den speicherverbrauch ermitteln.
Thx :-) das hilft mir weiter

Zitat:
Was macht dein Script? Liste mal alle Punkte auf.
1. Bilder hochladen- funktioniert immer.
2. Wenn Bilder eine bestimmte Dateigröße nicht überschreiten, den richtigen Typ besitzen dann werden Thumbs erstellt...

Aber das funktioniert ja alles, wollte ja nur Hilfe bei den zwei oben genannten Fragen.
Mit Zitat antworten
  #9 (permalink)  
Alt 17-08-2007, 19:46
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

im zweiten schritt (beim verkleinern der bilder) wird das problem liegen. aber besser ist, du korrigierst es, statt speicher zu messen.
Mit Zitat antworten
  #10 (permalink)  
Alt 17-08-2007, 21:48
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Ich denke, du wirst versehentlich zu viele image-resourcen anlegen, offen lassen, erzeugen, was auch immer! Wenn du dann sogar noch mit recht großen bildern arbeitest, kann da schnell die Grenze überschritten sein.

2646x3742 Pixel ah 100kb im JPEG sind als reine Pixeldaten schon ca. 10mb. Die ganzen Daten noch in einem PHP-Imagehandle bestimmt nochmal 20-40% drauf. Hast du zwei dieser Handle geöffnet, bist du schnell bei 30mb. Noch ein bisschen skalieren etc., Speicher voll.

Ich kenne den internen Aufbau der Imagehandle jetzt nicht, aber ich kann mir gut vorstellen, dass dies der Grund für den Speicherverbrauch sein wird.


Edit: Wenn es sogar eine ZIP-Datei mit etwas kleineren Bildern ist, kann es ganz fix zu viel werden, wenn du die Handle nicht rechtzeitig frei gibst oder mehrere gleichzeitig anlegst!
Mit Zitat antworten
  #11 (permalink)  
Alt 18-08-2007, 17:41
sypr0
 Registrierter Benutzer
Links : Onlinestatus : sypr0 ist offline
Registriert seit: Feb 2007
Beiträge: 167
sypr0 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
function create_thumb($imagefile$thumbfile,$type)
{
    if (
file_exists($thumbfile)) return FALSE;
    if (
$type == "image/gif")
               {
                    
$Img imagecreatefromgif($imagefile);
        
$Imgsize getimagesize($imagefile);
        
$oBreite $Imgsize[0];
        
$oHöhe $Imgsize[1];
    }
    if ((
$type == "image/pjpeg") or ($type == "image/jpeg"))
               {
       
$Img imageCreateFromJPEG($imagefile);
       
$oBreite imageSX($Img);
       
$oHöhe imageSY($Img);
    }
    
$nBreite 200;
    
//zwischenrechung
    
$verhältnis $oBreite $nBreite;
    
$nHöhe $oHöhe $verhältnis;

    
$Out imageCreateTrueColor($nBreite$nHöhe);

if (
$type == "image/gif")
{
          
imagecopyresized($Out$Img0000$nBreite$nHöhe$oBreite$oHöhe);
          
imagegif($Out,$thumbfile);
    }
if ((
$type == "image/pjpeg") or ($type == "image/jpeg"))
{
            
imageCopyResampled($Out$Img0000$nBreite$nHöhe$oBreite$oHöhe);
             
imageJPEG($Out$thumbfile);                                
    }
            return 
true;

Das is meine Funktion, bei der wohl so viel Resourcen verbraucht werden
@PHP-Desaster, könntest du mir helfen und sagen, wo ich hier was optimieren könnte, thx

Geändert von sypr0 (18-08-2007 um 17:43 Uhr)
Mit Zitat antworten
  #12 (permalink)  
Alt 18-08-2007, 17:43
tontechniker
 PHP Senior
Links : Onlinestatus : tontechniker ist offline
Registriert seit: Jul 2005
Beiträge: 1.972
tontechniker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Bau mal für die beiden Resourcen ein imagedestroy.
__________________
Die Regeln | rtfm | register_globals | strings | SQL-Injections | []
Mit Zitat antworten
  #13 (permalink)  
Alt 18-08-2007, 17:55
sypr0
 Registrierter Benutzer
Links : Onlinestatus : sypr0 ist offline
Registriert seit: Feb 2007
Beiträge: 167
sypr0 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

thx für den Tip,

da man die Datei auch nicht einzeln über dieses Thumb script laufen lassen kann, folgere ich mal, dass man im Script nicht mehr viel machen kann oder ?
Mit Zitat antworten
  #14 (permalink)  
Alt 18-08-2007, 20:02
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
da man die Datei auch nicht einzeln über dieses Thumb script laufen lassen kann ...
Mit Zitat antworten
  #15 (permalink)  
Alt 19-08-2007, 14:32
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Hast du die Handle am Ende der Funktion mal wieder freigegeben? Kann mir vorstellen, dass dies schon die Lösung ist.

Sonst mach mal ein paar Ausgaben innerhalb der Funktion, damit du siehst, an welcher Codestelle der Speicher endet!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

10.12.2018 Berni | Kategorie: MYSQL/ Management
piwik Open-Source Webanalyse-Software ansehen piwik Open-Source Webanalyse-Software

piwik ist eine gute Alternative zu Google Analytics. Viele Features und ein modernes Erscheinungsbild mit aussagefähigen Statistiken in Echtzeit

10.12.2018 phpler | Kategorie: PHP/ Besucherzaehler
jQuery Mobile ansehen jQuery Mobile

Touch-Optimized Web Framework für Smartphones & Tablets

09.12.2018 phpler | Kategorie: AJAX/ Framework
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:04 Uhr.