2014-02-13 5 views
0

모두 좋은 하루. 나는이 기능을 가지고 : 나는 하위 카테고리 이름을 잡아하려면이 기능을PHP PDO 메모리 제한

public function get_subcategory_name($parent_id){ 
    if($parent_id !=0){ 
     $data = DB::getInstance()->query("SELECT *FROM `" . Config::get('mysql/tbl_categories') . "` WHERE `id` = $parent_id"); 
     foreach($data->results() as $dt){ 
      if($dt->parent_category_id == 0){ 
       $name = $dt->name; 
      }else{ 
       $name = Category::get_subcategory_name($dt->parent_category_id) . $dt->name; 
      } 
     } 
    }else{ 
     return false; 
    } 
    return $name ." <i class='fa fa-angle-double-right'></i> "; 
} 

을, 나는 범주 그것이 false를 반환합니다 부모가없는 규칙을 가지고 있지만, 어떤 이유로이 기능이 작동하고 정지 결코 메모리 제한 문제가 있습니다. 나는 많은 방법을 시도했지만 어떤 해결책도 찾을 수 없다. 가능한 한 나를 도와주세요. 고맙습니다. 사용하여

+0

이 DB''의 클래스 정의를 작성하십시오입니다. 나는'results()'함수가 무의식적 인 루프를 초래하는 행 페칭을 잘못 처리한다고 생각합니다. –

+0

... '카테고리'클래스의 관련 부분을 게시하십시오. –

+0

'DB'가'PDO' 주위의 싱글 톤 래퍼 인 경우 제발, 제거하십시오. PHP의 Singeltons는 정말 무의미합니다. 'DB'가 어떻게 든 _extends_'PDO' : [최대한 빨리] (http://codereview.stackexchange.com/questions/29362/very-simple-php-pdo-class/29394#29394). 아, 그리고'id = $ parent_id' <- 주입 취약점이 될 수 있습니다. 준비된 문장을 사용하십시오. BTW : 메모리 제한 문제는'PDO'와 관련이 없다. '$ data-> results()'는 아마 당신의 불황의 원인이며, 무한 루프가 발생합니다. –

답변

0

일시적으로 추가 메모리를 할당 할 수는

ini_set('memory_limit', '750M'); 
+0

"결코 멈추지 않습니다"즉, 무한 루프. 문제를 "고치려면"무한한 메모리가 필요합니다 ... –

+0

코드가 손상된 경우 소비 할 수있는 리소스를 늘리지 말고 코드를 수정하십시오 –

+0

예 @Marc B 맞습니다. 예. 그 점에 감사드립니다. –