Tiempo de espera entre consultas sql

Iniciado por Percontex, 9 Mayo 2012, 07:20 AM

0 Miembros y 1 Visitante están viendo este tema.

Percontex

Veamos, tengo una página que estoy desarrollando que hace varias consultas a una base de datos tan solo con cargarla, funciona muy bien y todo pero tengo un temor al momento de subirla.

Alguien fácilmente podría comenzar un flood de gets y tirarme fácilmente el sitio, entonces lo que necesito es que haya un tiempo de espere antes de realizar las mismas consultas simultaneamente, por ejemplo:

Visito la página por primera vez y todo carga de inmediato.

Le doy f5 al siguiente segundo y deseo que me muestre una alerta o algo que diga que tiene que esperar unos segundos más.

Lo he intentado así:

<?php
function espera(){
sleep(5);
}
?>


Y luego insertar esta función más abajo:

register_shutdown_function('espera');

Pero de este modo lo único que logro es que la página quede 'cargando' 5 segundos, aunque sea la primera vez que se visita :(

Alguien me da una mano?

pwnz

#1
A lo mejor me he complicado un poco, de todas formas lo he hecho en 10 min quizá alguien te de una solución mejor xD.
Código (php) [Seleccionar]

<?php
session_start
();

if(isset(
$_SESSION['hora+5sg'])){
// Segunda vez o posterior que entras a la pagina
if(time()<$_SESSION['hora+5sg']){
//No puedes pasar, aqui redireccionas con header por ejemplo
echo "No puedes pasar";
}else{
echo "Puedes pasar";
$_SESSION['hora+5sg'] = time()+5// Pasaste, la siguiente vez sera dentro de 5 sg
}

}else{
// Primera vez que entras
$_SESSION['hora+5sg'] = time()+5// Tempo + 5 segundos
}

?>


Como dije lo hice rápido seguro que se puede mejorar. Básicamente cuando accedes guardas en una variable de sesión la hora en la que pudiste acceder a la página y le suma 5 segundos (puedes cambiarlo por lo que quieras),
luego con el if vas comprobando cada vez que accedes si han pasado 5 segundos o no.

Percontex

Cita de: pwnz en 10 Mayo 2012, 21:32 PM
A lo mejor me he complicado un poco, de todas formas lo he hecho en 10 min quizá alguien te de una solución mejor xD.
Código (php) [Seleccionar]

<?php
session_start
();

if(isset(
$_SESSION['hora+5sg'])){
// Segunda vez o posterior que entras a la pagina
if(time()<$_SESSION['hora+5sg']){
//No puedes pasar, aqui redireccionas con header por ejemplo
echo "No puedes pasar";
}else{
echo "Puedes pasar";
$_SESSION['hora+5sg'] = time()+5// Pasaste, la siguiente vez sera dentro de 5 sg
}

}else{
// Primera vez que entras
$_SESSION['hora+5sg'] = time()+5// Tempo + 5 segundos
}

?>


Como dije lo hice rápido seguro que se puede mejorar. Básicamente cuando accedes guardas en una variable de sesión la hora en la que pudiste acceder a la página y le suma 5 segundos (puedes cambiarlo por lo que quieras),
luego con el if vas comprobando cada vez que accedes si han pasado 5 segundos o no.

Gracias! por el momento va perfecto el script  ::)

Como dijiste en en el no puedes pasar, lo estoy redireccionando con un header a un html vació para evitar problemas ;)