Como puedo colocar un "temporizador" para que ejecute un script?

Iniciado por venadHD, 21 Julio 2015, 15:53 PM

0 Miembros y 2 Visitantes están viendo este tema.

venadHD

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)

engel lex

para que necesitas tal cosa? estoy seguro que puede solucionarse de otra forma
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

MinusFour

¿En que sistema operativo? En Linux puedes lanzar una subshell con sleep. Algo así como:

Código (bash) [Seleccionar]

sleep 300;
/usr/bin/php scriptAEjecutarEn5Minutos.php


Código (php) [Seleccionar]

shell_exec('nohup scriptAEjecutar.sh & &> /dev/null');

venadHD

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
Código (php) [Seleccionar]
shell_exec();

engel lex

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

venadHD

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

Código (php) [Seleccionar]
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

engel lex

exacto... en el campo "tiempo" de la DB guardas time()

luego usas algo como

Código (php) [Seleccionar]
$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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.