使用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时会发生故障。
背景
应用程序本身从专有文档管理系统导出图像(TIFF)数据,将关联的图像转换为单个PDF文档,并将文件写入逻辑结构。
失败对我没有意义,因为每个curl实例都应该是一个新句柄。
对此的任何帮助或指示都将不胜感激!
修改
我相信我通过添加以下几行找到了解决问题的方法: IMagick :: setResourceLimit(imagick :: RESOURCETYPE_MEMORY,3072); IMagick :: setResourceLimit(imagick :: RESOURCETYPE_MAP,3072);
在这篇文章中找到:PHP Imagick memory leak