Nageen
Nageen

Reputation: 1757

Maximum function nesting level of '415' reached, aborting

When i set nesting level more than 415 it gives error page is not working and set it by 400 then give error Maximum function nesting level of '415' reached, aborting!

function actionIndex(){
    $limit = 1000;
    ini_set('xdebug.max_nesting_level', $limit);
    $queryTopics = "SELECT tr.id,tr.`parent_id`, tr.`child_id`, tr.`order_by`, tr.`level`, tr.`child_id` AS `tid`, t.`name`,t.`seo_name`
                    FROM `topic_relations` tr
                    LEFT JOIN `topics` t ON tr.`child_id` = t.`id`
                    WHERE t.`status` = 1";
    $topicss = \Yii::$app->db->createCommand($queryTopics)->queryAll();
    $topics = array();
    foreach ($topicss as $key => $value) {
        $parentIdCombination = $this->findAllParent($value['id']);
        $combination = array_reverse($parentIdCombination);
        $combinations = implode($combination, ' ');
        $topics['parent_combination'] = $combinations;
        unset($combination);
        $topics[] = $value;
    }
    $data['topicsParentChildArr'] = $this->buildTopicsTree($topics);
    echo '<pre>';
    print_r($topics);
    return $this->render('index',['data'=>$data]);
}

this function call recursively

function findAllParent($id) {
    global $combination;
    $parentTopicQuery =  "SELECT * FROM `topic_relations` where id=".$id;
    $topic_row = \Yii::$app->db->createCommand($parentTopicQuery)->queryOne();

    if($topic_row['level']>0) {
        $combination[] = $topic_row['child_id'];
        $parentTopicQuery1 =  "SELECT * FROM `topic_relations` where child_id=".$topic_row['parent_id'];
        $topic_row1 = \Yii::$app->db->createCommand($parentTopicQuery)->queryOne();
        $this->findAllParent($topic_row1['id']);
    }else {
        $combination[] = $topic_row['child_id'];
    }
    //var_dump($combination);
    return $combination;
}

Upvotes: 0

Views: 243

Answers (1)

Philipp
Philipp

Reputation: 15639

There's no such limitaiton in PHP. The max function nesting level is a limitation of the xdebug extension.

If you want/need to increase this, just change the php.ini setting xdebug.max_nesting_level. I.e. you could use 2000.

xdebug.max_nesting_level = 2000

I have to mention, that this only applies for your development server. On production environments, there should never be the xdebug extension installed.

Upvotes: 1

Related Questions