내가 여기 무슨 일이 일어나고 있는지 확실하지 않다 소진, 나는 로컬 호스트에이 코드를 테스트하지만 지금 해봤 것을 내가이 오류 메시지를 받고 있어요 생중계 :재귀 메뉴 일으키는 치명적인 오류 : 허용 메모리 크기가
치명적 오류 : 사용 가능한 메모리 크기가 67108864 바이트 (261900 바이트를 할당하려고했습니다.) .../function/tree.php in 24 행
무한 재귀를 일으키는 일종의 코드를 추측하고 있지만 그것은 localhost에서 잘 작동했기 때문에 약간 당황했다. 나는 이것을 원하는 방식으로 작동 시키려고 며칠을 보냈다. 나는 방향을 바꾸지 않고 변화하는 것을 꺼린다. 이 오류의 원인 및/또는 오류 수정 방법에 대한 의견이 있으십니까?
<?php
function hasChild($parent_id)
{
$sql = "SELECT COUNT(*) as count FROM categories WHERE parent = '" . $parent_id . "'";
$qry = mysql_query($sql);
$rs = mysql_fetch_array($qry);
return $rs['count'];
}
function CategoryTree($list,$parent,$append)
{
$list = '<li>'.'<a href="inventory.php?cid=' . $parent['id'] . '&cname=' . $parent['cname'] . '">' . $parent['cname'] . '</a>'.'</li>';
if (hasChild($parent['id'])) // check if the id has a child
{
$append++;
$list .= "<ul class='child child".$append."'>";
$sql = "SELECT * FROM categories WHERE parent = '" . $parent['id'] . "'";
$qry = mysql_query($sql);
$child = mysql_fetch_array($qry);
do{
$list .= CategoryTree($list,$child,$append); //this is line 24
}while($child = mysql_fetch_array($qry));
$list .= "</ul>";
}
return $list;
}
function CategoryList()
{
$list = "";
$sql = "SELECT * FROM categories WHERE (parent = 0 OR parent IS NULL)";
$qry = mysql_query($sql);
$parent = mysql_fetch_array($qry);
$mainlist = "<ul class='parent'>";
do{
$mainlist .= CategoryTree($list,$parent,$append = 0);
}while($parent = mysql_fetch_array($qry));
$list .= "</ul>";
return $mainlist;
}
?>
여전히 오류 메시지가 표시되지만 허용 된 크기가 더 크고 어떤 이유로 든 오류 줄이 21 행에 있습니다 ... 치명적인 오류 : 134217728 바이트의 메모리 크기가 소모되었습니다 (44 바이트 할당 시도)/기능 /tree.php on line 21 –
그런 다음 '-1'로 설정하여 메모리 누수를주의하십시오 – meda