oops, just on another side note, I thought i'd try loading the image resource into the PelJpeg constructor, in the hope that perhaps that would reduce the amount of memory used. the resource was definitely a gd resource strange, $exif = $origJpeg->getExif(); did not cause an error but the code inside the if statement didn't execute
$origJpeg = new PelJpeg($imageResource); $exif = $origJpeg->getExif(); if (!is_null($exif)) { // execute code } dave wrote: > [EMAIL PROTECTED] wrote: > >> thanks for your reply >> >> i'll try unset, and see if that helps >> also, i know the problem is in that code i posted, because if i comment >> out the pel stuff, the memory that is used doesn't accumulate in the same >> way >> for example, >> >> with pel code, after doing an image resize, using memory_get_usage() >> 3000 KB after first image >> 3500 after second image >> 4000 >> 7000 >> 11000 >> and so on, >> >> but without the pel code, it looks more like >> 3000 >> 3010 >> 3005 >> 3020 >> 3020 >> 3010 >> 3020 >> the memory usage doesn't go up significantly >> >> i'm pretty sure it has something to do with writing the file three times >> in that one function >> do you know of a better way to get the exif data, write the jpeg using gd, >> then write the exif data back to the jpeg? >> >> i'm going to experiment with removing one of the file writes, just to see >> how it affects memory tonight, but i can't really see how it can be >> reduced to one file write >> >> > hmmm.... > i basically tested it with just opening the original file with pel, then > closing it using unset > and writing the image using imagejpeg > basically > $origJpeg->loadFile($fullFilePath); > $exif = $origJpeg->getExif(); > unset($origJpeg); > imagejpeg(); > > and it still ran out of memory, did a few more images, but was still > less than 10 > > seems like file_get_contents doesn't work nearly as well as one would hope > >> if worse comes to worse, i may have to save the exif data to db or >> something and put it back later, in a different process >> >> thanks >> dave >> >> On Wed, November 22, 2006 7:44 pm, Martin Geisler wrote: >> >> >>> dave <[EMAIL PROTECTED]> writes: >>> >>> Hi Dave >>> >>> >>> >>> >>>> hmmm... doesn't appear to be pel or anything like that seems that my >>>> image resources aren't being completely freed or something and the >>>> memory usage accumulates, until it crashes >>>> >>>> >>> That's strange. I haven't tried processing multiple large images in a >>> single script with a memory limit before, so I haven't seen the bug before. >>> >>> >>> PEL don't know anything about file handles, image resources, or >>> similar stuff that would consume resources, so I don't see how it should >>> leak memory. >>> >>> It does have a few static variables in Pel.php which could fill up. >>> I'm thinking of Pel::$exceptions which is an array of exceptions which >>> have been suppressed when parsing. Try calling Pel::clearExceptions() once >>> you are done with each image -- maybe that will help. >>> >>> >>> >>>>> i'm using gd to resize my images, and pel to re-attach the exif data >>>>> after gd has finished but i've run into a problem with the memory >>>>> limit >>>>> >>>>> i'm using php 5.2.0 on fedora core 4 pel is updated via svn from trunk >>>>> >>>>> >>>>> >>> Good! >>> >>> >>> >>> >>>>> [...] >>>>> >>>>> >>>>> the offending code is [...] >>>>> >>>>> $origJpeg->loadFile($fullFilePath); >>>>> >>>>> >>>>> >>> Good, this uses file_get_contents() to load the file in one big swoop. >>> The PHP manuals says that this is "the preferred way to read the >>> contents of a file into a string. It will use memory mapping techniques if >>> supported by your OS to enhance performance." >>> >>> Unfortunately file_get_contents() doens't seem to work quite as good >>> as promised by the PHP documentation: see SF bug #1210126 where someone >>> suggested that PEL should read the data from the files as needed. I >>> thought that file_get_contents() would work that way since it memory maps >>> the file. >>> >>> >>> >>>>> $exif = $origJpeg->getExif(); >>>>> >>>>> >>>>> [...] >>>>> >>>>> >>>>> $newJpeg = null; >>>>> } >>>>> $origJpeg = null; >>>>> >>>>> >>>>> >>> There might be a difference between assigning null to the variables >>> and calling unset() on them. >>> >>> >>> >>>>> i am using imagedestroy, that is in another section of the code that >>>>> is not visible here >>>>> >>>>> >>> Okay good, that would have been my next question :-) >>> >>> >>> -- >>> Martin Geisler --- <[EMAIL PROTECTED]> --- http://mgeisler.net >>> >>> >>> Read, write, create Exif data in PHP with PEL: http://pel.sf.net >>> Take control of your webserver with PHP Shell: http://phpshell.sf.net >>> ------------------------------------------------------------------------- >>> Take Surveys. Earn Cash. Influence the Future of IT >>> Join SourceForge.net's Techsay panel and you'll get the chance to share >>> your opinions on IT & business topics through brief surveys - and earn >>> cash >>> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV >>> _______________________________________________ >>> PEL-devel mailing list >>> PEL-devel@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/pel-devel >>> >>> >>> >>> >> >> ------------------------------------------------------------------------- >> Take Surveys. Earn Cash. Influence the Future of IT >> Join SourceForge.net's Techsay panel and you'll get the chance to share your >> opinions on IT & business topics through brief surveys - and earn cash >> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV >> _______________________________________________ >> PEL-devel mailing list >> PEL-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/pel-devel >> >> >> > > > -- http://dtracorp.com ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ PEL-devel mailing list PEL-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/pel-devel