Aquí un ejemplo de lo que tengo pensado, aunque no creo que sea una solución muy
fina y seguro hay una forma mejor, pero es para tomar la idea.
Código PHP:
$origenes = mysql_query("SELECT id,titulo FROM datos");
while ($origen = mysql_fetch_array($origenes)) {
echo $origen['titulo']."<br />";
if(fmod($origen['id'], 1000) == 0) { sleep(5); }
}
Nota: las consultas son mas complejas e incluye consultas combinadas y condicionales, pero para lo que quiero hacer, esto lo ejemplifica bien.
El
echo $origen['titulo']."<br />"; es para simbolizar las operaciones que se realizan.
La clave está en
if(fmod($origen['id'], 1000) == 0) { sleep(5); }
Básicamente lo que hace es que cuando el
id es múltiplo de 1000, se detenga 5 segundos y luego continúa.
Lo he probado en localhost y funciona bien, con una prueba de 7000 registros, pero me parece que la solución es algo
tosca y aún no me convence.
En este caso, el script se detiene 7 veces, sumando 35 segundos de parada, mas lo que tarda en ejecutar las consultas, ¿es correcto?, al detenerlo con sleep() ¿se reinicia el tiempo de ejecución o se continúa sumando el tiempo que ya llevaba?.