У меня есть функция, которая принимает массив URL-адресов (изображений), и я использую curl_multi_getcontent
, чтобы получить содержимое каждого изображения. Он отлично работает для массива <1000 изображений, но для массива большего размера (> 1000 изображений) я получаю ошибку памяти:
Допустимый размер памяти 134217728 байт исчерпан (попытался выделить 18237603 байт )
Я уверен, что мне выделено достаточно памяти, и проблема в другом. Можете ли вы помочь мне, пожалуйста, это моя функция:
$mh = curl_multi_init(); // init the curl Multi
$aCurlHandles = array(); // create an array for the individual curl handles
foreach ($urls as $key => $url) { //add the handles for each url
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
$aCurlHandles[$key] = $ch;
curl_multi_add_handle($mh, $ch);
curl_close($ch);
unset($ch);
}
$active = null;
//execute the multi handle
do {
curl_multi_exec($mh, $active);
curl_multi_select($mh);
} while ($active > 0);
// iterate through the handles and get content
foreach ($aCurlHandles as $key => $ch) {
$image = curl_multi_getcontent($ch); // get the content
//
// do something with the image ....
//
curl_multi_remove_handle($mh, $ch);
}
curl_multi_close($mh); // close the curl multi handler
Спасибо!