Извлечение данных с помощью curl_multi_exec с чрезмерным использованием памяти

Извлечение данных с помощью curl_multi_exec приводит к огромному использованию памяти. Я попытался отладить это, и это где использование памяти начинает расти.

do {
$mrc = curl_multi_exec($mh, $active);
var_dump("Curl exec ".memory_get_usage());
} while ($mrc == CURLM_CALL_MULTI_PERFORM);

while ($active) {
var_dump("Check active ".memory_get_usage());
if (curl_multi_select($mh) != -1) {
do {
$mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
}

URL-адреса, которые я здесь выбираю, представляют собой ~ 3 МБ необработанных данных в формате JSON каждый, и их четыре, поэтому теоретически они должны занимать ~ 12 МБ памяти, верно?

string(17) "Curl exec 1697936"string(20) "Check active 1697936"string(20) "Check active 1947536"string(20) "Check active 2373824"string(20) "Check active 3012800"string(20) "Check active 3852224"string(20) "Check active 4966336"string(20) "Check active 5801920"string(20) "Check active 6850800"string(20) "Check active 7882992"

Версия PHP 5.3.6

-1

Решение

memory_get_usage () возвращает значение в байтах! Вот документы http://php.net/manual/en/function.memory-get-usage.php
В этом свете значения не кажутся необычными: 7,882,992 байта составляют 7,88 МБ.

0

Другие решения

Других решений пока нет …