Schrift
[thread]8532[/thread]

Variable "einfrieren"?: Variable soll nicht weiter hochgezaehlt

Leser: 1


<< >> 5 Einträge, 1 Seite
nikster77
 2006-11-27 00:35
#72018 #72018
User since
2006-02-08
26 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen.
Ich suche nach einer Moeglichkeit eine Variable einzufrieren...

Eine Logfileueberwachung zaehlt fuer mich Ereignisse, ab einem bestimmten Wert werden verschiedene Aktionen angestossen, die Variable zuruecksetzen ($var=0) bringts mir nicht weil in der Zeit evtl. wieder neue Ereignisse eintreffen und die Variable wieder hochgezaehlt wird, das soll aber nicht passieren.

Weiss jemand wie das geht?

Danke + Gruesse\n\n

<!--EDIT|nikster77|1164580582-->
Ronnie
 2006-11-27 01:43
#72019 #72019
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Statt
Code: (dl )
$var++
könntest du eine Funktion verwenden die deine Variable inkrementiert bis zu einem Maximalwert:
Code: (dl )
1
2
3
4
5
6
sub inc {
my $var = shift;
${$var}++ unless ${$var} == $MAX;
}
# yada yada yada
inc(\$var);
\n\n

<!--EDIT|Ronnie|1164614046-->
betterworld
 2006-11-27 01:51
#72020 #72020
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Ich verstehe nicht ganz, warum die Variable eingefroren werden muss, um Ereignisse ab einem bestimmten Wert anzustoßen.

Es gibt das Modul Readonly. Wenn man eine Variable zu Readonly macht, gibt es ein die, wenn eine Änderung versucht wird. Wenn Du das nicht wünschst, kannst Du Dir aber mit Tie::Scalar selbst etwas entsprechendes bauen. Beschreibe aber trotzdem Deine Problemstellung noch einmal genauer, denn vielleicht geht es ja noch ganz anders.\n\n

<!--EDIT|betterworld|1164587940-->
topeg
 2006-11-27 11:08
#72021 #72021
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Ansich ist es nicht vorgesehen eine Variable zu temporär sperren. Das selbe kannst du durch Programmlogick erreichen. (z.b durch eine zweite Variable, die sagt ob die erste nur lesbar sein soll, oder auch schreibbar.)

Warum sperrst du nicht das Logfile solange du daran arbeitest? Dann können keine neuen Logs eingetragen werden, und das Programmn, das schreiben will, wartet bis die Datei wieder freigeben wird.
Du könntest auch ein Logrotate machen, wenn x Einträge in der Datei sind.
Oder aber, du machst ein fork und läst das original weiterarbeiten, während die Kopie mit den ausgelösten Aktionen beschäftigt ist.
Oder du speicherst den aktuellen Zählerstand in einer anderen Variable und nutzt die.

Oder du erklärst etwas genauer was nun die "Logfileüberwachung" genau macht. Schreibt die das Logfile, ließt die das Logfile zyklisch aus? Wird ein anderes Progrmm verwendet um auf das logfile zu zu greifen?
nikster77
 2006-11-27 18:30
#72022 #72022
User since
2006-02-08
26 Artikel
BenutzerIn
[default_avatar]
Hi,
das mit dem Maximalwert hat's gebracht. :)

Zum Hintergrund:
Wenn ein bestimmtes Ereignis mehr als n-mal Auftritt will ich einen Server offline nehmen (nicht runterfahren nur NIC-Adresse aendern).
Logs sollen weiter geschrieben werden also sperren waere nicht so gut.
Ich will natuerlich nicht das das Programm jetzt auch n-mal versucht die IP zu aendern (macht zwar eigentlich nichts ist aber unschoen)

Also Danke + Gruss
<< >> 5 Einträge, 1 Seite



View all threads created 2006-11-27 00:35.