Faz uns 3 anos que não programo mais em php, alguem me corriga se eu estiver errado.
quando você faz:
while ($variavel) {
...
}
qualquer valor em $variavel diferente de NULL, false e 0 será sempre true ? … Se for isso, como seu $DAO é um objeto, ele nunca vai sair desse fluxo (dando timeout pelo PHP).
Outra questão é usar fetch_object, ele é mais lento que fetch_array. E o certo seria algo como: