Ho un problema piuttosto strano e non riesco a uscirne

Sono all'interno della stessa classe.
Il metodo "langs_id_by_short_in_array" richiama il metodo "lang_id_by_short", passandogli come parametro una semplice stringa. Dopo il return del valore, però, il server mi manda in timeout.

Posto qui sopra i due metodi completi nel caso vi serva vedere qualcosa in particolare.
Non è necessario che vi spieghi i passaggi, perché in verità debuggando ho visto che l'errore si trova esattamente quando richiamo il metodo e cioè:

Codice PHP:
$var_lang_id[] = $this->lang_id_by_short($value); 
La variabile $value è una semplice stringa che vale "it" (ho fatto il die ed è esatta).
Passandogli questo parametro, il metodo "lang_id_by_short" ritorna come valore "1", che è esattamente quello che deve fare (ho fatto il die di $row['id'] e mi butta fuori esattamente "1", che sarebbe l'id del record estratto dal database).
Quindi prima di fare il return, il valore di $row['id'] è corretto.

Ho provato a fare un die() prima e dopo il richiamo:

Codice PHP:
die($value); //qua il die funziona
$var_lang_id[] = $this->lang_id_by_short($value);
die(
$value); //qua il die non viene più visto, quindi l'errore è esattamente qui sopra 
Ho provato di tutto, ma non ne esco. I valori in input e output sono corretti, eppure mi blocca lo script. Qualche idea?


Ecco qua i due metodi:


codice:
public function langs_id_by_short_in_array($var_lang = ''){
        
        if(empty($var_lang)){
            return false;
        }
        
        //array: splitto i campi contenenti le lingue in base alla virgola e agli spazi
        $var_lang_arr = $this->string_in_list($var_lang);
        
        //contiene gli id delle lingue passate
        $var_lang_id = array();
        
        foreach($var_lang_arr as $value){
            //id corrispondente alla lingua passata
            $var_lang_id[] = $this->lang_id_by_short($value);
        }
        
        return $var_lang_id;
        
    }

codice:
public function lang_id_by_short($short = '') {
        
        if(empty($short)){
            return false;
        }
        
        $result = $this->select( array( 'field'=>$this->fd['id'], 'number'=>1, 'where' => array($this->fd['short']."='".$short."'") ) );
        
        if($result){
            foreach($result as $result2){
                $row = $this->db_row($result2);
            }
            return $row['id'];
        }
        
        return false;


    }