Toon posts:

[PHP] Functie geeft memory probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik kon geen beter topicnaam verzinnen en kan het ook even niet meer vinden met google (de goede oplossing).

Ik maak gebruik van imagecreatefromjpeg("$source_image"); binnen een "resize and save" functie, wanneer ik deze dan aanspreek krijg ik:

code:
1
2
Fatal error: Allowed memory size of 8388608 bytes exhausted at (null):0 
(tried to allocate 5120 bytes) in /****.php on line 74


Nu is het vreemde dat wanneer ik imagecreatefromjpeg("$source_image"); gebruik in mijn script wat alleen resized en toont (niet opslaat) dat er dan niets aan het handje is met dezelfde file. :?

Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 22:08

ripexx

bibs

Het gaat fout op regel 74 of ergens daarvoor. Dus welke code staat daar?

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 18-09 12:47

killercow

eth0

Kortom je hebt niet genoeg geheugen meer om die functie te gebruiken,
wellicht kun je het eens proberen met een kleiner plaatje?
(width*height) zodat je bewerking wat minder memmory gebruikt?

openkat.nl al gezien?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Okee misschien iets te weinig info.

regel 74: $src_img = imagecreatefromjpeg("$source_image");

image x = 1280*1024 en geeft bij "resize and save" de error.
image y = 1024*768 en geeft bij "resize and save" geen error.

image x = 1280*1024 en geeft bij "resize and show" geen error.
image y = 1024*768 en geeft bij "resize and show" geen error.

In beide gevallen maak ik grbruik van $src_img = imagecreatefromjpeg("$source_image"); met dezefde images (x of y)

[ Voor 22% gewijzigd door Verwijderd op 07-04-2004 14:53 ]


Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 22:08

ripexx

bibs

Ik weet niet of het uit maakt en hoe php omgaat met toewijzen maar maakt het verschil als je het volgende doet
PHP:
1
$src_img = imagecreatefromjpeg($source_image);

of
PHP:
1
$source_image = imagecreatefromjpeg($source_image);

Je kan dit ook controleren met de volgende functie.memory_get_usage(), ja kan dan zien waar php het meeste geheugen gebruikt.

[ Voor 4% gewijzigd door ripexx op 07-04-2004 15:41 . Reden: Zo beter :+ ]

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

  • MatHack
  • Registratie: Oktober 2001
  • Niet online

MatHack

Dev by day, Gamer by night

Ik zou de quotes rondom $source_image ook even weghalen als ik jou was. Het gaat hier namelijk alleen maar om variabele, je hebt ook kans dat dit nog wat geheugen scheelt, omdat hij dan niet de conversie naar string hoeft te doen.

There's no place like 127.0.0.1


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Verwijderd schreef op 07 april 2004 @ 14:48:
....
In beide gevallen maak ik grbruik van $src_img = imagecreatefromjpeg("$source_image"); met dezefde images (x of y)
Ja, maar wat doe je ervoor?

Bedenk sowieso dat een 1280x1024 plaatje (32bits kleuren) 5242880 bytes geheugen kost en 1024x768 3145728 bytes.

Je save methode zal wel ergens een copie proberen te maken. 2x5 mb is boven die limiet terwijl 2x3 mb dat niet is.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ervoor doe ik niet zo bar veel, vreemde is dat de error plaats vind op $src_img = imagecreatefromjpeg($source_image); en niet op imagejpeg($newimage,$source_image,100); waar ik het bestand probeer op te slaan....

Maar ik geef $klant wel gewoon de 1024x768 restrictie...... meeste cams kunnen dat aan :)

[ Voor 19% gewijzigd door Verwijderd op 07-04-2004 16:12 . Reden: meetse -> meeste ]


Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 22:08

ripexx

bibs

Geef dan eens het hele stuk code van die resize en save optie want hier kan ik vrij weinig mee. :)

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

  • eXcyle
  • Registratie: Juni 2002
  • Laatst online: 20-09 15:55
het werken met plaatjes binnen PHP neemt erg veel geheugen in gebruik, dit kwam ik ook tegen met de thumbnail functie van me gallery script .
opzich is het makelijkste om in je php.ini op regel 207
memory_limit = 4M
te veranderen , ik heb op mijn server deze optie van 4 naar 16 MB gezet en dat werkt nu prima.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Tis een voorkomend probleem waarvan de oplossing luid: niet zulke grote foto's uploaden!

Acties:
  • 0 Henk 'm!

  • Tjark
  • Registratie: Juni 2000
  • Laatst online: 18-09 23:26

Tjark

DON'T PANIC

nee, het beste antwoord is niet je klant/gebruiker beperken en niet zo lui zijn om 2 cijfers in je php.ini aan te passen: s/4/16/

[ Voor 6% gewijzigd door Tjark op 07-04-2004 16:21 ]

*insert signature here


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 21-09 14:28
TjarkVerhoeven schreef op 07 april 2004 @ 16:20:
nee, het beste antwoord is niet je klant/gebruiker beperken en niet zo lui zijn om 2 cijfers in je php.ini aan te passen: s/4/16/
Het lijkt me toch ook geen gek idee om een beetje argumentatie te geven...

Je kunt het beste de verschillende zaken die met dit probleem samenhangen te inventariseren. Wil je wel dat PHP zoveel van het systeem gaat vragen. oe vaak gebeurt dit en is er genoeg ruimte om dit soort zware acties uit te voeren.
Zijn er misschien snellere/betere alternatieven? Werkt dit met bijvoorbeeld imagequick misschien sneller? Probeer daar eens over na te denken.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
1. PHP.ini kan ik van het betreffende systeem niet aanpassen.
2. Imagemagic heb ik niet tot mijn beschikking deze klus.
3. Je kunt ook niet bezig blijven, uiteindelijk zal de site redelijk traffic trekken dus beetje inperken is geen probleem.....

Daarbij kunnen de meeste camera's standaard worden ingesteld op 1024, nu heb ik de limit op 1024x768 of 768x1024 staan dus dat moet voldoende zijn, veel gebruikers kunnen ook wel een klein beetje overweg met de standaard proggies die bij de cam zitten dus ik verw8 geen grote problemen.

Imagemagick is idd ook een optie, maar dit geeft vaak weer een redelijke load op het systeem, dit vermijd ik liever.....

Acties:
  • 0 Henk 'm!

  • stekkel
  • Registratie: Augustus 2001
  • Laatst online: 17-09 08:05
Hoe resize je dat plaatje dan? doe je dat met imagecreate => imagecopyresized? Roep je image destroy aan om memory te releasen?

M.a.w. zonder source code is er geen zinnig woord over te zeggen.

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 21-09 14:28
Je kunt ook niet bezig blijven, uiteindelijk zal de site redelijk traffic trekken dus beetje inperken is geen probleem.....
Deze snap ik niet helemaal. Heb je het verschil in load tussen phpGD en Imagequick overigens weleens ooit gemeten of is dit gewoon een pure gok?
Pagina: 1