Foros del Web » Programando para Internet » PHP »

Procesar por vencimiento

Estas en el tema de Procesar por vencimiento en el foro de PHP en Foros del Web. como se llama o como se hace para procesar datos automaticamente cuando se vencen los datos, explico un poquito mas tengo una tabla de tickets ...
  #1 (permalink)  
Antiguo 13/01/2009, 19:47
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 7 meses
Puntos: 55
Información Procesar por vencimiento

como se llama o como se hace para procesar datos automaticamente cuando se vencen los datos, explico un poquito mas

tengo una tabla de tickets los cuales tienen
id (int)
fecha_vence (datetime)
cliente (int)

en esta tabla se van guardando los datos pero deben ser procesados (con php obviamente) en el momento del vencimiento para enviar un acuse de vencimiento al cliente

se que existe el cronjob, pero este se ejecuta como minimo 1 vez por minuto y una vez q pasa el minuto larga otro proceso en paralelo y esto me puede complicar que se solapen los datos o generar incongruencias, necesitando alguna tecnica q el segundo proceso no se ejecute hasta que el anterior no termine

como una suerte de cola de impresion para la impresora, si hay un documento en la cola lo imprime y hasta que no termine no imprime el segundo y asi, pero el orden lo dictamina la hora de vencimiento

algo simil creo q es tambien lo q usan los juegos online por browser onda ogame, imperia, travian, etc, o nada que ver?

si alguien me puede guiar o pasar alguna data de donde puedo encontrar info lo agradeceria eternamente

saludos
__________________
Degiovanni Emilio
developtus.com
  #2 (permalink)  
Antiguo 13/01/2009, 20:22
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: [Avanzados] Procesar por vencimiento

Hola emiliodeg,

Lo que puedes hacer es guardar en un archivo que el proceso se esta ejecutando, entonces al lanzar el segundo proceso checas si esta corriendo el anterior y si lo esta abortas la ejecucion asi puede implementar la cola.

Otra opcion si te es tan critico es tener corriendo un PHP directamente desde el shell de tu sistema operativo, este PHP al estar corriendo continuamente evitara que se hagan dobles procesos.

Saludos
  #3 (permalink)  
Antiguo 14/01/2009, 06:52
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 7 meses
Puntos: 55
Respuesta: [Avanzados] Procesar por vencimiento

gracias GatorV!

me interesaria saber un poco mas sobre la segunda opcion, ya que con la primera no tengo problemas, tienes algunos links a mano que me puedas pasar o de donde puedo conseguir mas info para analizar esta opcion?

gracias
__________________
Degiovanni Emilio
developtus.com
  #4 (permalink)  
Antiguo 14/01/2009, 07:20
 
Fecha de Ingreso: enero-2009
Mensajes: 165
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: [Avanzados] Procesar por vencimiento

Hola emiliodeg, estas seguro que cronjob "se ejecuta como minimo 1 vez por minuto" ?
al menos en cpanel (lo que conozco) se puede dar fecha y hora específica con lo que podrías hacer que corra el script solo una vez al día.
  #5 (permalink)  
Antiguo 14/01/2009, 07:50
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
Respuesta: [Avanzados] Procesar por vencimiento

No sé o no comprendo que queres lograr, pero para que no se pisen los procesos marcas en la tabla, en un campo, con una simple bandera booleana, quien ha sido notificado/procesado o bien que está en proceso. Entonces, por más que se pisen los crons ninguno ejecutará el mismo registro en la db.

Al menos eso hago por ejemplo en envíos de emails masivos.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #6 (permalink)  
Antiguo 14/01/2009, 11:39
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Procesar por vencimiento

Es algo simple:
Código php:
Ver original
  1. <?php
  2. while(true) {
  3.       // procesas
  4.       sleep(1);
  5.  
  6.       if(hay_un_error_fatal()) {
  7.              break;
  8.       }
  9. }

Esto lo corres desde el shell de tu sistema operativo, usando el interprete php:
Código:
php archivo.php
Saludos
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 16:36.