No veo que puedas salir nunca del bucle si la varible $procesoFinalizado cambia de valor fuera del bucle. Tampoco veo cuando cambia el valor de $restantes, pero supongo que está en el código que borraste. Creo que la cosa sería así:
Código PHP:
Ver original<?php
while(!$procesoFinalizado) {
while(($file2=readdir($dh)) !== false) {
if (!is_dir( $file2) && $file2!="." && $file2!=".."){
// codigo que realiza la busqueda
}//if
}// while interno
if(count($restantes)>0) { }
else {
$procesoFinalizado=true;
}
} //if is dir
}//mientras no haya finalizado el proceso
?>