CURL的PHP​​内存不足错误

时间:2012-12-19 19:58:43

标签: curl imagick php

使用CURL检索远程图像时,我遇到了一些致命错误。

错误讯息: PHP致命错误:内存不足(分配786432)(试图分配266241字节)

我有一个设计用于检索远程图像并将其返回到变量的函数:

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;
}

调用curl_exec时会发生故障。

背景

  • 特定请求未发生故障
  • 内存限制已增加到3GB
  • Imagick用于执行图像转换任务
  • 每张图片均低于100kb
  • 某些文档包含500-600个单独的页面
  • 运行PHP 5.4.9(Windows 64位)
  • 这是通过命令行运行的,未附加到Web服务器
  • 每条记录的平均处理时间(包括记录中的所有图像)为3.5秒。

应用程序本身从专有文档管理系统导出图像(TIFF)数据,将关联的图像转换为单个PDF文档,并将文件写入逻辑结构。

失败对我没有意义,因为每个curl实例都应该是一个新句柄。

对此的任何帮助或指示都将不胜感激!

修改

我相信我通过添加以下几行找到了解决问题的方法: IMagick :: setResourceLimit(imagick :: RESOURCETYPE_MEMORY,3072); IMagick :: setResourceLimit(imagick :: RESOURCETYPE_MAP,3072);

在这篇文章中找到:PHP Imagick memory leak

0 个答案:

没有答案