2014-02-13 50 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

...併發布'Category'類的相關部分。 –

+0

如果'DB'是'PDO'周圍的單例包裝器,請將其除掉。 PHP中的Singeltons真的很無意義。如果'DB'不知何故_Extends_'PDO':[儘快溝通](http://codereview.stackexchange.com/questions/29362/very-simple-php-pdo-class/29394#29394)。哦,'id = $ parent_id' < - 可能是一個注入漏洞,使用預準備語句。順便說一句:內存限制問題不太可能與「PDO」相關。 '$ data-> results()'可能是你的困境的原因,導致無限循環。在if()'測試之前發佈更多代碼 –

回答

0

可以暫時分配額外的內存使用是

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

「永不停止」,換句話說就是無限循環。你需要無限的內存來「修復」問題... –

+0

如果代碼被破壞,不要增加它可以消耗的資源,而是修復代碼 –

+0

是@Marc B你是對的我只是給一個例如,謝謝你 –