我在PHP中有一個長時間的運行操作,並且它總是崩潰,內存不足。爲什麼這個php函數泄漏內存
,所以我開始記錄MEM使用方式:
$result = memory_get_usage()/1024;
echo $result;
通過註釋的部分代碼,我發現了「有罪」之一,負責吃了我所有的公羊。
這是代碼:
static private function from_camel_case($str)
{
$str[0] = strtolower($str[0]);
$func = create_function('$c', 'return "_" . strtolower($c[1]);');
$result = preg_replace_callback('/([A-Z])/', $func, $str);
return $result;
}
它基本上將文本轉換首字母大寫的用下劃線小寫。
這是爲什麼泄漏?
我在我的Mac OS上運行PHP 5.3.5爲毫安X Lion中
您可以使用'preg_replace'用'_'作爲前綴加上字母,然後將'strtolower'應用於整個字符串。它會阻止使用回調和創建功能 – zerkms 2012-04-28 11:57:47
它不是**泄漏內存,你只是不知道內存在哪裏使用。看到答案。 – salathe 2012-04-28 12:00:29