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

Reply via email to