phpbar.de logo

Mailinglisten-Archive

AW: [php] Fragen zum Neuberechnen von Bildern und Speicherüberlauf

AW: [php] Fragen zum Neuberechnen von Bildern und Speicherüberlauf

Tim Hildebrandt TConnect at gmx.net
Mit Sep 29 14:36:49 CEST 2004


Hallo Patrick,


> Tim Hildebrandt wrote:
> 
> > 2. Weiß jemand, wie man zur Laufzeit die benötigte 
> Speichermenge messen
> > kann? Ich würde gerne rausfinden, woran genau es scheitert.
> 
> http://php.net/memory_get_usage

Ah klasse. Werde ich mir heute Nachmittag mal zu Gemüte führen... ;-)


> das problem scheint es öfter zu geben. wie aktuell ist denn
> dein php bzw deine gdlib?

Recht aktuell. Wir haben auf jeden Fall die Version, die nach dem Fall des
GIF-Patentes die Berechnung dieser Bilder wieder zuläßt. Versionsnummer hab
ich aber gerade nicht im Kopf.


> jedenfalls werden alle formate intern in's gd format verwandelt
> welches um einiges größer ist, aber schneller zu verarbeiten.
> testweise könntest du ein bild in einem dieser formate speichern
> um zu sehen wie groß diese im speicher sind:

> http://de2.php.net/imagegd
> http://de2.php.net/imagegd2

Das ist auch eine super Idee. Dann kann man wenigstens mal *sehen*, wie viel
Speicher gebraucht wird. Ggf. könnte man auch hingehen und eine Reihe
verschiedener Bilder in unterschiedlichen Ausgangsgrößen auf den Server
legen und testweise mal in das imagegd(2) Format umwandeln, danach die
Dateigröße der Zieldatei errechnen lassen und in eine Tabelle tippen. Ich
glaube, ich mach das am Wochenende mal und werde das dann hier noch mal
posten. Einfach, um mal ein Gefühl dafür zu bekommen, wie *weit* man gehen
kann...


Was mich mal in diesem Zusammenhang noch interessieren würde ist die Frage,
ob man z.B: beim JPG-Format die Komprimierungsstufe beim Öffnen des Bildes
herausfinden (lassen) kann. 


> ich habe mal ein komisches problem festgestellt. bilder die ich 
> bearbeite und speichere und direkt im browser via img-tag ausgebe
> werden teilweise nicht komplett angezeigt. daher ist meine vermutung
> das die gdlib intern asynchron arbeitet.
> versuche doch mal der gdlib ein wenig ruhe mit der sleep() funktion
> zu verschaffen.

OK werde ich machen.

Im Übrigen ergibt sich momentan noch ein anderes witziges Problem mit dem
Bild-Upload: Mittlerweile bin ich gar nicht mehr so sicher, ob es sich
tatsächlich um einen Speicherüberlauf dreht. Der o.g. Fehler tritt bei einem
unserer Kunden auf. Wir arbeiten mit "korrespondierenden Frames", was
bedeutet, dass die Ergebnisse von Formularen in einen versteckten 0-Frame
geladen werden. Beim Bildupload sieht das dann so aus, dass vor dem Absenden
des Formulars ein DIV gezeigt wird, in dem eine kleine animierte GIF-Grafik
den Upload-Vorgang anzeigt. Die tatsächliche Fehlermeldung (Sprich den
PHP-Code des Speicherüberlaufs) bekommt der Kunde bestenfalls nie zu
Gesicht. ABER: Die animierte Grafik kann nicht mehr abgeschaltet werden, da
die notwendigen JavaScript-Reaktionen im versteckten Frame nicht mehr
ausgegeben werden. 

In diesem Falle funktioniert ein Upload und die Berechnung eines 67kB großen
Bildes beim Kunden *nicht*, bei uns aber sehr wohl! Das bedeutet, dass das
Formular (und damit das Bild) vielleicht gar nicht korrekt auf unserem
Server ankommt. Sprich: Ein Lokales Problem z.B: mit dem Netzwerk/der
Firewall beim Kunden...?

Ich cheke das morgen vorort und werde dann noch mal was dazu schreiben.


Grüße Tim



php::bar PHP Wiki   -   Listenarchive