我在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