Bueno, asi a bote pronto se me ocurre hacer algo como:
Código PHP:
$intentos=0;
while ((3>$intentos) && !($conexion=@mysql_connect("localhost","pp","pp"))) {
$intentos++;
sleep(rand(0.5,1.5));
}
if (!$conexion) {
echo "Sin conexion despues de $intentos intentos";
}
Lo que hace es intentar crear 3 veces una conexion. Entre intento e intento, se para un tiempo aleatorio entre 0.5 y 1.5 segundos. Asi se intenta dar tiempo a que se libere alguna conexion (aunque puede volver a ser cogida antes de que lo hagas tu).
Puedes jugar con el numero de intentos y los tiempos.
Saludos.