Schrift
[thread]9180[/thread]

Problem mit Zeitstempel

Leser: 1


<< >> 7 Einträge, 1 Seite
leissi
 2007-07-12 11:08
#78397 #78397
User since
2005-07-06
84 Artikel
BenutzerIn
[default_avatar]
Hallo Habe ein Problem beim Zeitstempel.
Folgendes wollte vergleichen ob der Zeitstempel der Datei nicht älter als 24 Stunden ist. Leider kommt nicht das erwartete Ergebnis raus. Eine der Dateien ist älter als 24 Stunden. Kann jemand mir ein Tip geben was ich falsch mache?

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
  # Hier wird die Datei auf aktuelles Datum geprüft. Ergebnis wird dann ausgegeben.
            print LogDatei ("INFO : ","Der Zeitstempel der Datei wird geprüft!\n");
            my $t = time();
            my $max_age = $t;
            my $dir = $DateiPfad;
            opendir(DIR,$dir) or die $!; # Verzeichnis "öffnen"  
            my @verzeichnisse = grep{-f $dir .'/'.$_}readdir(DIR);                              
            if(existsTimeStamp($file, 24))
         
                  {
                    # Wenn Datei im Verzeichnis vorhanden, dann prüfen ob Suchstring in der Datei enthalten ist.  
                   print LogDatei "Die Datei: " . $file . "  wurde im Verzeichnis gefunden und hat ein aktuelles Datum!\n";

und hier die Subroutine zum Zeitstempel:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Subroutine1 Datei-Zeitstempel nicht älter als 1 Tag

# Hier wird geprüft ob aktuelle Datei vorliegt oder nicht
# return:
#  0 = Die überprüfte Datei ist nicht aktuell genug
#  1 = Die überprüfte Datei ist aktuell genug
 sub existsTimeStamp
  {
   
    my ($file,$max_age) = @_;
    my $tmpValue = 0;
    #print LogDatei $tm;#
    my $age = (time - (stat($file))[10]) / ( 24 * 60 * 60 );
    print LogDatei ("Info:  " . $age . "und" . $max_age . "Alter");
    if ($age < $max_age)
      {    
        $tmpValue = 1;
       # print LogDatei ("INFO: ","Aktuelle Datei" . $file . " vorhanden!");
       # print LogDatei ("INFO","file  stat($datei)");
      }
    else
      {  
        $tmpValue = 0;
       # print LogDatei ("INFO: ","Aktuelle Datei" . $file . " nicht vorhanden!");
      }  
    return $tmpValue;
  }


Rausschreiben tut er mir folgendes zu $age und $max_age
Quote
Info: $age=113.614039351852 und $max_age= 24 Alter

Vielen Dank für Eure Hilfe

Gruss

Leissi

edit pq: code-tags hinzugefügt\n\n

<!--EDIT|pq|1184234911-->
leissi
 2007-07-12 12:59
#78398 #78398
User since
2005-07-06
84 Artikel
BenutzerIn
[default_avatar]
Hallo,

Problem gefunden und gelöst hatte in der Subroutine war ein fataler Fehler und zwar habe ich Sie wie folgt umgeschrieben:


Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
sub existsTimeStamp 
  {
   
    my ($file,$max_age) = @_;
    my $tmpValue = 0;
   
    my (undef, undef, undef, undef, undef, undef, undef, undef, undef,$mtime) = stat($file); #Hier wird der Zeitstempel ermittelt, wann die Datei überschrieben wurde
     
    print   $mtime;
    my $age = (time - $mtime);
   
    if ($age < ( 12 * 60 * 60 ))
      {    
        $tmpValue = 1;
       # print LogDatei ("INFO: ","Aktuelle Datei" . $file . " vorhanden!");
       # print LogDatei ("INFO","file  stat($datei)");
      }
    else
      {  
        $tmpValue = 0;
       # print LogDatei ("INFO: ","Aktuelle Datei" . $file . " nicht vorhanden!");
      }  
    return $tmpValue;
  }


Gruss

Leissi


edit pq: hier auch code-tags hinzugefügt\n\n

<!--EDIT|pq|1184247300-->
pq
 2007-07-12 13:02
#78399 #78399
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
hallo leissi,
es gibt hier im forum bestimmte tags, mit denen du teile deiner postings formatieren kannst.
für *code* benutzt man üblicherweise code-tags, und für *quotes* (heisst auf deutsch
zitate) benutzt man üblicherweise quote-tags.

die *code*-tags haben den sinn, code mit fester breite darzustellen,
deshalb macht es *keinen* sinn, code, (auch wenn er mal aus einem
zitat sein sollte) mit *quote*-tags darzustellen.\n\n

<!--EDIT|pq|1184231060-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
leissi
 2007-07-12 14:55
#78400 #78400
User since
2005-07-06
84 Artikel
BenutzerIn
[default_avatar]
Hi,

sorry hab nicht aufgepast. Werde mich bessern!

Gruss Leissi
pq
 2007-07-12 17:36
#78401 #78401
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=leissi,12.07.2007, 12:55]Werde mich bessern![/quote]
noch eine info: der "Beitrag ändern" button über deinem artikel bedeutet,
dass du den artikel editieren kannst.\n\n

<!--EDIT|pq|1184247413-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
renee
 2007-07-12 22:14
#78402 #78402
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=leissi,12.07.2007, 10:59]
Code: (dl )
     my (undef, undef, undef, undef, undef, undef, undef, undef, undef,$mtime) = stat($file); #Hier wird der Zeitstempel ermittelt, wann die Datei überschrieben wurde
[/quote]
besser:
Code: (dl )
my ($mtime) = (stat $file)[9];
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
betterworld
 2007-07-13 05:10
#78403 #78403
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Noch besser imho:
Code: (dl )
1
2
use File::stat;
my $mtime = stat($filename)->mtime;

(ungetestet)
<< >> 7 Einträge, 1 Seite



View all threads created 2007-07-12 11:08.