Llevo 4 horas (de reloj) intentando discernir el porqué de este comportamiento. Como veréis en el script lo que hace es abrir un fichero para escritura, leer los valores de UTC y cargarlos a un array.
Defino dos tiempo, uno para el tiempo de monitor ($hora_integracion) y otro para la hora del sistema ($donetime). Al final del script le coloco un timestamp que es el $donetime que es el que usaré en el siguiente tiempo de monitoreo para comprobar si ha sido monitorizado, sino, iré multiplicando hacia atrás hasta que coincida, pero eso más adelante.
Antes de finalizar con el timestamp, lo que hago es un foreach para cada valor del array, si la $hora_integracion es MAYOR le digo que me haga el print(), sino, a tomar viento.
La cosa es que el jodío me lo hace después de n segundos que no sé concretar. ¿Tenéis alguna idea de qué pajas mentales está haciendo Perl? ¿o es que soy un programador amateur demasiado punky?
Todo, absolutamente todo, sera más que bienvenido...
Using perl Syntax Highlighting
use DBI;
#Declaracion de variables Globales de tiempo, $hora_integracion es el timing mas unos segundos por si
#existieran cuellos de botella, 60 = 1 minutos + 5 seg de gracia
@control_lastupdate= ();
#Declaramos conexión a la DB
my @db_datos = ('DBI:Oracle:OPENVIEW', 'OVO_BAC', 'OVO_BAC');
my $dbh = DBI->connect(@db_datos) or die "no se ha podido conectar\n";
#Comprobamos si existe fichero, si no -> lo creamos
my $dir_salida ="c:\\Logs_update\\";
if (!(-e $dir_salida)) {
mkdir($dir_salida) or die "Error al crear el directorio\n";
}
my $lastupdate = "c:\\logs_update\\last_update.txt";
if (!(-e $lastupdate)) {
open (SALIDA,">$lastupdate") or die "no se ha podido abrir el fichero para escritura\n";
close SALIDA;
}
#Abrimos de nuevo el fichero y miramos a ver si la ultima hora de finalizacion (en este modo de test, la hora de inicio)
#superior a $hora_integracion, si lo es, significa que hace menos de 2 minutos que se actualizó
#Sino, debemos de ir ir ejecutando múltiplos y comprobando contra esos múltiplos de monitorización hasta que sea mayor.
open (SALIDA,"<$lastupdate") or die "No se puede abrir el fichero para lectura de fechas\n";
foreach (<SALIDA>){
if (/\s*(\d*)/){
push (@control_lastupdate, $_);
}
}
#DEBUG: PARA CONTROL EN DESARROLLO DE TIMESTAMP
$donetime = time;
$hora_integracion = $donetime - 70;
print "$donetime\n";
print "$hora_integracion\n";
#Indicamos que si lo encuentra -> ok (DESARROLLO), Sino, le sume otro 125 segundos y vuelva a intentarlo, así encontramos el rango
#donde nos hemos quedado con el último pooling
my $multiplicador_tiempo = ();
foreach $control_lastupdate(@control_lastupdate){
if ($hora_integracion > $control_lastupdate ) {
print "dabuten, lo detecta es este -> $control_lastupdate";
}
else {
print "no esta fuera de margen\n";
}
}
open (SALIDA, ">>$lastupdate");
print SALIDA " $donetime \n";
close SALIDA;
#Abrimos fichero y escribimos la hora de cierre
open (SALIDA, ">>$lastupdate");
print SALIDA " $donetime \n";
close SALIDA;
#Declaracion de variables Globales de tiempo, $hora_integracion es el timing mas unos segundos por si
#existieran cuellos de botella, 60 = 1 minutos + 5 seg de gracia
@control_lastupdate= ();
#Declaramos conexión a la DB
my @db_datos = ('DBI:Oracle:OPENVIEW', 'OVO_BAC', 'OVO_BAC');
my $dbh = DBI->connect(@db_datos) or die "no se ha podido conectar\n";
#Comprobamos si existe fichero, si no -> lo creamos
my $dir_salida ="c:\\Logs_update\\";
if (!(-e $dir_salida)) {
mkdir($dir_salida) or die "Error al crear el directorio\n";
}
my $lastupdate = "c:\\logs_update\\last_update.txt";
if (!(-e $lastupdate)) {
open (SALIDA,">$lastupdate") or die "no se ha podido abrir el fichero para escritura\n";
close SALIDA;
}
#Abrimos de nuevo el fichero y miramos a ver si la ultima hora de finalizacion (en este modo de test, la hora de inicio)
#superior a $hora_integracion, si lo es, significa que hace menos de 2 minutos que se actualizó
#Sino, debemos de ir ir ejecutando múltiplos y comprobando contra esos múltiplos de monitorización hasta que sea mayor.
open (SALIDA,"<$lastupdate") or die "No se puede abrir el fichero para lectura de fechas\n";
foreach (<SALIDA>){
if (/\s*(\d*)/){
push (@control_lastupdate, $_);
}
}
#DEBUG: PARA CONTROL EN DESARROLLO DE TIMESTAMP
$donetime = time;
$hora_integracion = $donetime - 70;
print "$donetime\n";
print "$hora_integracion\n";
#Indicamos que si lo encuentra -> ok (DESARROLLO), Sino, le sume otro 125 segundos y vuelva a intentarlo, así encontramos el rango
#donde nos hemos quedado con el último pooling
my $multiplicador_tiempo = ();
foreach $control_lastupdate(@control_lastupdate){
if ($hora_integracion > $control_lastupdate ) {
print "dabuten, lo detecta es este -> $control_lastupdate";
}
else {
print "no esta fuera de margen\n";
}
}
open (SALIDA, ">>$lastupdate");
print SALIDA " $donetime \n";
close SALIDA;
#Abrimos fichero y escribimos la hora de cierre
open (SALIDA, ">>$lastupdate");
print SALIDA " $donetime \n";
close SALIDA;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
y me devuelve:
- Código: Seleccionar todo
1228298409
1228298339
dabuten, lo detecta es este -> 1228298309
dabuten, lo detecta es este -> 1228298313
dabuten, lo detecta es este -> 1228298315
dabuten, lo detecta es este -> 1228298316
dabuten, lo detecta es este -> 1228298323
dabuten, lo detecta es este -> 1228298326
dabuten, lo detecta es este -> 1228298328
dabuten, lo detecta es este -> 1228298330
dabuten, lo detecta es este -> 1228298332