Foros del Web » Programando para Internet » PHP »

Ejecutar rutina pasado cierto tiempo de conexión

Estas en el tema de Ejecutar rutina pasado cierto tiempo de conexión en el foro de PHP en Foros del Web. Hola, estoy haciendo una web de una galería de arte con un carrito de la compra, lo hago por sesiones, al ser obras de artes ...
  #1 (permalink)  
Antiguo 01/05/2008, 09:15
 
Fecha de Ingreso: diciembre-2004
Mensajes: 296
Antigüedad: 19 años, 4 meses
Puntos: 1
Ejecutar rutina pasado cierto tiempo de conexión

Hola, estoy haciendo una web de una galería de arte con un carrito de la compra, lo hago por sesiones, al ser obras de artes cuando un usuario añade un cuadro al carrito este lo tengo que poner en modo "reservado", esto lo detallo en la BBDD del propio cuadro, para que diferentes usuarios del viejo mundo compartan este atributo, o sea que si alguien lo añade a su carrito este quede bloqueado, y si lo desvinculan de su cesta entonces pasa a estado "disponible". El problema es que si he añadido a mi carrito y cierro el ordenador, este cuadro me queda en estado bloqueado en la BBDD y no me ha dado tiempo a desagregarlo de mi cesta, para desbloquearlo. si el cierra sesión puedo hacer por JS que abra una ventana y este ejecute un script php a la BBDD, para desbloquearlo y luego la dicha ventana se cierre, pero que pasa si se le apaga el ordenador, no me ejecutaría este script. de aquí mi pregunta, ¿hay algún script que se ejecute a cierto tiempo de hacer una petición aunque no haya respuesta por el client?

Lo siento por la explicación tan larga pero era para situar os un poco, o liar os más..., gracias un saludo
  #2 (permalink)  
Antiguo 01/05/2008, 11:27
 
Fecha de Ingreso: abril-2008
Ubicación: Argentina
Mensajes: 20
Antigüedad: 16 años
Puntos: 2
Re: Ejecutar rutina pasado cierto tiempo de conexión

Hola segma, Disculpa que te diga, pero no me parece muy logico que el cuadro quede en estado "reservado" ya que si tienes por ejemplo 30 personas "mirando" los cuadros y te los van reservando podrias quedarte sin cuadros para mostrar a los nuevos visitantes. Es por eso que existen lo que se llaman transacciones en las bases de datos y es para que una sola persona o proceso tome un recurso en un determinado momento y luego lo libere.
No se si la persona para la que hiciste el sistema te pidio que esto sea asi, pero yo que tu trataria de convencerlo de que no es una buena idea el estado "reservado" es mejor que si dos personas tiene el cuadro en el carrito y lo compra una primero que a la otra le de un error elegante explicando lo que paso.

Por otra parte si te es absolutamente obligatorio hacerlo asi, una idea que se me ocurre es que dejes una tarea cada 5 min por ejemplo en un cron, que lo que puede hacer es llamar a un archivo php y que este recorra todos los cuadros viendo su estado y la hora en que ingreso en ese estado y si se pasan de el tiempo determinado los cambia de estado.
  #3 (permalink)  
Antiguo 01/05/2008, 14:06
Avatar de Darth_Carl  
Fecha de Ingreso: mayo-2008
Ubicación: En Foros DWP
Mensajes: 160
Antigüedad: 15 años, 11 meses
Puntos: 8
Re: Ejecutar rutina pasado cierto tiempo de conexión

Te lo dejo en minutos y en segundos

Minutos:
Código PHP:
<?php
$time
=date(i);
$min=$time //Cambia el 1 por el número de minutos
while($min>$time) {
$time=date(i);
}
//Aquí acciones a realizar pasado el tiempo
...
?>

Segundos:
Código PHP:
<?php
$time
=date(s);
$seg=$time 15 //Cambia el 15 por el número de segundos
while($seg>$time) {
$time=date(s);
}
//Aquí acciones a realizar pasado el tiempo
...
?>
  #4 (permalink)  
Antiguo 01/05/2008, 16:16
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Re: Ejecutar rutina pasado cierto tiempo de conexión

Cita:
Iniciado por Niko1980 Ver Mensaje
Hola segma, Disculpa que te diga, pero no me parece muy logico que el cuadro quede en estado "reservado" ya que si tienes por ejemplo 30 personas "mirando" los cuadros y te los van reservando podrias quedarte sin cuadros para mostrar a los nuevos visitantes. Es por eso que existen lo que se llaman transacciones en las bases de datos y es para que una sola persona o proceso tome un recurso en un determinado momento y luego lo libere.
No se si la persona para la que hiciste el sistema te pidio que esto sea asi, pero yo que tu trataria de convencerlo de que no es una buena idea el estado "reservado" es mejor que si dos personas tiene el cuadro en el carrito y lo compra una primero que a la otra le de un error elegante explicando lo que paso.

Por otra parte si te es absolutamente obligatorio hacerlo asi, una idea que se me ocurre es que dejes una tarea cada 5 min por ejemplo en un cron, que lo que puede hacer es llamar a un archivo php y que este recorra todos los cuadros viendo su estado y la hora en que ingreso en ese estado y si se pasan de el tiempo determinado los cambia de estado.
Apoyo todo lo que te ha dicho!, también tenés otras opciones más complejas, aunque todo gira entorno a lo que el cliente te pida.

Cita:
Iniciado por Darth_Carl Ver Mensaje
Te lo dejo en minutos y en segundos

Minutos:
Código PHP:
<?php
$time
=date(i);
$min=$time //Cambia el 1 por el número de minutos
while($min>$time) {
$time=date(i);
}
//Aquí acciones a realizar pasado el tiempo
...
?>
Segundos:
Código PHP:
<?php
$time
=date(s);
$seg=$time 15 //Cambia el 15 por el número de segundos
while($seg>$time) {
$time=date(s);
}
//Aquí acciones a realizar pasado el tiempo
...
?>
No comprendo Darth_Carl para que son los ejemplos...si son para "dormir el script", no es buena idea para este caso ya que dejas el script en espera (la idea que plantea Niko1980 seguramente sea la más adecuada), y aparte si para algo necesitas usar esto existen las funciones sleep() y usleep() de php.

Saludos
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #5 (permalink)  
Antiguo 02/05/2008, 11:17
 
Fecha de Ingreso: diciembre-2004
Mensajes: 296
Antigüedad: 19 años, 4 meses
Puntos: 1
Re: Ejecutar rutina pasado cierto tiempo de conexión

Hola a todos, gracias por las respuestas,
Al principio todo el mundo puede ver todos los cuadros, estén como estén, vendidos o reservados. Pero creo que tenéis razón y la estoy liando, el cuadro quedara en reserva, cuando justo acceda a la pasarela de pago, así que el más rápido es el que se lo lleva, esta claro. Así ellos podrán agregar los cuadros que sean pero si viene otro y lo compra antes pues se lo lleva. Es como lo de los billetes. Gracias por todo porque igualmente quería saber lo de ejecutar cosas temporizadas, gracias un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:47.