Не работает цикл?
Так наоборот же - цикл отлично работает, да так отлично что никогда сам не завершается.

В вашем коде нет ничего, что способствовало бы окончанию цикла.
for
+1. Этот участок кода точно делает то, что Вы задумывали?:
... 
   for($h;$h>$window;$bounce-$h){
        $d+=1;
    }
...
Вы данный цикл можете вообще заменить на:
for( ; true ; ) 
			$d+=1;
И получить тот-же результат, ибо значение $d все-равно никому уже не пригодится. :-)