gpt4 book ai didi

php - 为什么这个php函数会泄漏内存

转载 作者:行者123 更新时间:2023-12-04 20:53:19 25 4
gpt4 key购买 nike

我有一个长时间运行的 PHP 操作,它总是因内存不足而崩溃。

所以我开始记录内存使用情况:

        $result = memory_get_usage() / 1024;
echo $result;

通过评论部分代码,我发现了“有罪”的代码,负责吃掉我所有的 ram。

这是代码:

        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 X Lion 上的 MAMP 中运行 PHP 5.3.5

最佳答案

因为你是 creating a new function every time that function runs .

由于您使用的是 5.3,您可以将 create_function 替换为匿名函数,看看是否有帮助:

    static private function from_camel_case($str)
{
$str[0] = strtolower($str[0]);
$result = preg_replace_callback('/([A-Z])/', function($matches) {
return '_' . strtolower($matches[1]);
}, $str);
return $result;
}

或者将回调提取到普通函数中:

    static private function from_camel_case($str)
{
$str[0] = strtolower($str[0]);
$result = preg_replace_callback('/([A-Z])/', array(__CLASS__, 'replace_case'), $str);
return $result;
}

static private function replace_case($matches) {
return '_' . strtolower($matches[1]);
}

关于php - 为什么这个php函数会泄漏内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10363216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com