El tema es, queria que cuando el usuario acccede a una pagina con una cierta query, por ejemplo ?peticion=IJS8ffd87dgsG/8d87fg87fd , ejecute un temporizador de 5 minutos en el que ejecute una funcion, aun sin que el usuario este visitando la pagina, es decir, que solo dependa del script en PHP, como podria hacerlo? (Y no puedo usar CRON, porque seria 5 minutos desde que el usuario visita la pagina)
para que necesitas tal cosa? estoy seguro que puede solucionarse de otra forma
¿En que sistema operativo? En Linux puedes lanzar una subshell con sleep. Algo así como:
sleep 300;
/usr/bin/php scriptAEjecutarEn5Minutos.php
shell_exec('nohup scriptAEjecutar.sh & &> /dev/null');
Cita de: engel lex en 21 Julio 2015, 16:01 PM
para que necesitas tal cosa? estoy seguro que puede solucionarse de otra forma
Ando creando un sistema de recuperacion de contraseñas, por mi panel de login. La cosa es que el link de recuperacion solo quiero que funcione por un cierto tiempo, de ahi la necesidad de hacer eso
y el host no soporta la funcion
shell_exec();
eso lo colocas en la DB, ya que tienes que colocar una clave al azar (para que no exploten el sistema) colocas la hora de la petición, si se accede al sistema, primero se hará un delete de todo lo que tenga más de 5 minutos desde la hora de solicitud y luego accesas a ver si la peticion de ese usuario existe
Cita de: engel lex en 21 Julio 2015, 16:15 PM
eso lo colocas en la DB, ya que tienes que colocar una clave al azar (para que no exploten el sistema) colocas la hora de la petición, si se accede al sistema, primero se hará un delete de todo lo que tenga más de 5 minutos desde la hora de solicitud y luego accesas a ver si la peticion de ese usuario existe
Hmm, parece sencillo, algo como usar tendria que usar algo como
time() + (60*5);
Para introducir los 5 primeros minutos, y luego el delete que dices tu, para que, basandose en la hora de la peticion, decida si existe o no
exacto... en el campo "tiempo" de la DB guardas time()
luego usas algo como
$hace_cinco_minutos = time()-300
$sql= "DELETE FROM $tabla WHERE tiempo < $hace_cinco_minutos"
o si quieres guardas time+300 y delete time... en el orden que quieras