PHP 内存管理 - fatal error : Out of memory

标签 php mysql

我是一名 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);
}

关于PHP 内存管理 - fatal error : Out of memory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13510784/

相关文章:

php - 使用 CodeIgniter 从 MySQL 中检索不同的结果

php - 基本的 MySQL/PHP 过滤

php mysql - 如果不存在则插入项目

php - 以 K 为单位计算色温

php - 在定制广告系统中跟踪印象/点击的最佳方法?

MySQL:同一场比赛有多个 Volley 盘结果

mysql - 启动配置单元元存储

php - 将选项中的 "name"文本传递给 php 表单

php - 如何使用vimeo高级API显示视频

php - 拍卖搜索引擎 MySQL 的动态过滤器