Acabo de darme cuenta de donde esta el fallo.
Si os dais cuenta el script se mete en un bucle infinito de llamadas a si mismo, de ahi que de el error de "limite excedido".
La solucion ha sido: 
 Código PHP:
    function mifuncion($var) {
        if ( $var == 1000 ) {
                header("location: " .$_SERVER['SCRIPT_URI']. "?error=1");
                exit;
        }
        else
                return 1;
}
 
// Fiajos que he puesto primero esta comprobacion y termino el script
// porque sino estaria llamando recursivamente a la funcion //"mifuncion" antes de comprobar si ha habido un error.
if ($_GET['error'] == 1) {
        print "Imprimo esto porque ejecutamos el header y error vale 1<br>";
        exit;
}
 
$var = 1000;
if ( mifuncion($var) == 1)
        print "Bien, no ejecutamos el header sino la parte else.<br>"; 
    
  Espero haberme explicado !!