i'm experiencing some fatal errors when using CURL to retrieve remote images.
Error Message: PHP Fatal error: Out of memory (allocated 786432) (tried to allocate 266241 bytes)
I have a function designed to retrieve the remote image and return it to a variable:
function download_file($file, $ref)
{   
    $curl_obj = curl_init();    
    curl_setopt($curl_obj, CURLOPT_URL, $file);
    curl_setopt($curl_obj, CURLOPT_HEADER, 0);
    curl_setopt($curl_obj, CURLOPT_REFERER, $ref);
    curl_setopt($curl_obj, CURLOPT_BINARYTRANSFER, 1);
    curl_setopt($curl_obj, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($curl_obj, CURLOPT_MAXREDIRS, 3);                           
    curl_setopt($curl_obj, CURLOPT_FOLLOWLOCATION, TRUE); //followlocation cannot be used when safe_mode/open_basedir are on
    curl_setopt($curl_obj, CURLOPT_SSL_VERIFYPEER, FALSE);               
    if(!$downloaded_binary = curl_exec($curl_obj)){
            $downloaded_binary = false; // downloading failed, return false
    }    
    curl_close($curl_obj);
    unset($curl_obj);
    return $downloaded_binary;
}
The failure occurs when curl_exec is called.
Background
- The failure does not occur on a specific request
 - The memory limit has been increased to 3GB
 - Imagick is used to perform image conversion tasks
 - Each image is under 100kb
 - Some documents contain 500-600 individual pages
 - Running PHP 5.4.9 (windows 64 bit)
 - This is run through the command line and is not attached to a web server
 - Average processing time per record (includes all images in record) is 3.5 seconds.
 
The application itself exports image (TIFF) data from a proprietary document management system, converts the associated images into a single PDF document and writes the files out to a logical structure.
The failure does not make sense to me, since each curl instance should be a new handle.
Any help or direction on this would be greatly appreciated!
EDIT
I believe I found the resolution to the issue, by adding the following lines: IMagick::setResourceLimit(imagick::RESOURCETYPE_MEMORY, 3072); IMagick::setResourceLimit(imagick::RESOURCETYPE_MAP, 3072);
Found in this post: PHP Imagick memory leak