带有CURL的PHP内存不足错误
使用CURL检索远程图像时,我遇到一些致命错误 错误消息: PHP致命错误:内存不足(已分配786432)(尝试分配266241字节) 我有一个函数,用于检索远程图像并将其返回到变量:带有CURL的PHP内存不足错误,curl,imagick,php,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
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秒
在这篇文章中可以找到:如果不再需要返回值,也需要将其取消设置。也许这就是内存泄漏的原因。谢谢你的回复!您建议在哪里取消链接?return语句不结束函数执行吗?还是我错了?在return语句之后取消设置($downloaded\u binary)似乎是合乎逻辑的,但我不确定这是否会得到执行。1.添加了$downloaded_binary=null;到函数2的开头。添加了gc_collect_循环();到主循环的末尾。此循环不在函数中。应用程序正在运行,我希望这将解决这个问题。