我是一名 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/