我是一名新手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万行代码是否会导致内存问题,或者我在内存管理方面做些傻事。
答案 0 :(得分:1)
将您的资源分成更小的部分,仅包含您真正需要的部分。当你一遍又一遍地重复同样的事情时,将它重构为一个单独的函数并用适当的参数调用它。
在不知道具体任务的情况下,我们无法给出更多建议。
您可以根据条件逐步构建查询字符串
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);
}
答案 1 :(得分:0)
内存泄漏不正常,不应该发生。您可以尝试一些解决方案来在小部件上肢解此代码并进行结构化。
你可以试试像ZEND这样的MVC解决方案。 确保您的代码不再执行任何您需要的操作。 回顾所有。
即时通讯。