Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: venadHD en 21 Julio 2015, 15:53 pm



Título: Como puedo colocar un "temporizador" para que ejecute un script?
Publicado por: venadHD en 21 Julio 2015, 15:53 pm
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)


Título: Re: Como puedo colocar un "temporizador" para que ejecute un script?
Publicado por: engel lex en 21 Julio 2015, 16:01 pm
para que necesitas tal cosa? estoy seguro que puede solucionarse de otra forma


Título: Re: Como puedo colocar un "temporizador" para que ejecute un script?
Publicado por: MinusFour en 21 Julio 2015, 16:01 pm
¿En que sistema operativo? En Linux puedes lanzar una subshell con sleep. Algo así como:

Código
  1. sleep 300;
  2. /usr/bin/php scriptAEjecutarEn5Minutos.php

Código
  1. shell_exec('nohup scriptAEjecutar.sh & &> /dev/null');


Título: Re: Como puedo colocar un "temporizador" para que ejecute un script?
Publicado por: venadHD en 21 Julio 2015, 16:12 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
Código


Título: Re: Como puedo colocar un "temporizador" para que ejecute un script?
Publicado por: 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


Título: Re: Como puedo colocar un "temporizador" para que ejecute un script?
Publicado por: venadHD en 21 Julio 2015, 16:26 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

Código
  1. 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


Título: Re: Como puedo colocar un "temporizador" para que ejecute un script?
Publicado por: engel lex en 21 Julio 2015, 16:30 pm
exacto... en el campo "tiempo" de la DB guardas time()

luego usas algo como

Código
  1. $hace_cinco_minutos = time()-300
  2. $sql= "DELETE FROM $tabla WHERE tiempo < $hace_cinco_minutos"

o si quieres guardas time+300 y delete time... en el orden que quieras