使用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);
}
}
我在这里获取的网址大约是3mb的原始JSON格式数据,其中有4个,所以它理论上应该占用~12mb的内存,对吗?
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
答案 0 :(得分:0)
memory_get_usage()以字节为单位返回值!这是文档http://php.net/manual/en/function.memory-get-usage.php 从这个角度来看,这些值似乎与众不同,7,882,992字节为7.88 MB。