codice:
while (!$query->EOF) { // ma EOF non significa End Of File ? cos'e' ?

//INIZIO CONTROLLO timeout
$x = 1; // e x lo mettiamo a 1
$ogni = 30; // e ogni lo mettiamo a 30 
$x++; // e x diventa 2
if($x == $ogni) { // come fai ? ... qui $x sara' sempre 2
set_time_limit(30); // non avverra' mai
sleep(3); // non avverra' mai
$x = 0; // non avverra' mai
}
//FINE CONTROLLO timeout

inoltre usi un ciclo while come se questo fosse un "idle", mentre blocca solo l' esecuzione dello script finche' non e' finito o non viene chiuso ... mica chiaro cosa volevi fare