PHP 内存管理 - 致命错误:内存不足



我是一个新手PHP开发人员,正在学习这门伟大的语言。我现在最终拥有一个由 1,343,579 行组成的脚本,当我尝试运行它时,我得到以下内容:

Fatal error: Out of memory (allocated 269221888) (tried to allocate 536870912 bytes) in Unknown on line 0

我有一段相同的代码重复了 512 次,因为我允许 2^9 种不同的组合,用于不同的搜索选项。我正在尽力通过使用unset(),空变量,有时显式调用gc_collect_cycles()来最大程度地减少内存泄漏。

请您告诉我 100 万行代码是否最终会出现此内存问题,或者我在内存管理方面正在做一些愚蠢的事情。

将您的源拆分为更小的部分,只包含您真正需要的内容。当你一遍又一遍地重复同样的事情时,把它重构成一个单独的函数,并使用适当的参数调用它。

如果不了解具体任务,我们就无法提供更多的建议。

您可以根据自己的条件逐步构建查询字符串

function execute_query($pdo, $cond1, $cond2, $cond3, ..., $cond9)
{
    $params = array();
    $bind_types = '';
    $sql = 'select * from mytable where';
    $sql = "$sql condition1 = ?";
    $params[] = $cond1;
    if (isset($cond2)) {
        $sql = "$sql and condition2 = ?";
        $params[] = $cond2;
    }
    if (isset($cond3)) {
        $sql = "$sql and condition3 = ?";
        $params[] = $cond3;
    }
    ...
    $sth = $pdo->prepare($sql);
    return $sth->execute($params);
}
<</div> div class="one_answers">

内存泄漏不正常,不应该发生。您可以尝试一些解决方案来在小部分上肢解此代码并对其进行结构化处理。

你可以尝试一些MVC解决方案,比如ZEND或其他什么。确保你的代码不会做你需要的更多的事情。查看全部。

关于这一点。

最新更新