2014-11-06 60 views
-1

使用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); 
    } 
} 

我在這裏取的網址是〜每個原始JSON格式的數據的3MB,有他們四個人,因此在理論上應採取〜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

+1

最後輸出的字符串顯示≈8MB已分配。這個值有什麼問題? – mudasobwa 2014-11-06 14:53:33

回答

0

memory_get_usage()返回以字節爲單位的價值!這裏是文檔http://php.net/manual/en/function.memory-get-usage.php 有鑑於此,這些值看起來並不平常,7,882,992字節是7.88 MB。

+0

哦,你說得對。然後,這是其他東西泄漏,因爲它遇到了超過128mb的內存使用率的致命錯誤。將調試更多。 – Mayumi 2014-11-06 15:33:17