Alarm auslösen / scharfstellen
Flo
- php
0 Vinzenz Mai0 vaudi0 Flo
Hi!
Habe auf meinem Server eine Datei, die von einem PHP-Script per Cronjob aller halben Stunde auf die letzte Dateiänderung geprüft wird. Falls die Änderung länger als eine halbe Stunde zurückliegt, wird automatisch eine Mail ("Alarm") versendet. Das Problem ist nun, dass ich jetzt jedes mal eine Mail bekomme, wenn die Datei nicht mehr aktuell ist. - So soll es ja auch sein
ABER: Um das Problem an dem Computer zu beheben (Was die Inaktuallität der Datei hervorgerufen hat) wo es aufgetreten ist, braucht es seine Zeit (langer Weg bis zum betroffenen Computer)
Soll heißen: Ich bekomme immer immer immer wieder die Mail aller halben Stunde, obwohl ich ja nun mittlerweile weiß, dass es Alarm gibt.
Wie könnte ich es lösen, dass ich den Alarm zwischenzeitlich abstellen kann, also besser: der Alarm ( und damit das Script ) selber erst wieder von mir aktiviert werden muss??
Eine Vorüberlegung: in einer MySQL-Datenbank einen Wert ändern, der das Script verhindert nach dem ersten Versenden weitere Mails zu versenden, bis ich (durch bspw. ein weiteres Script) den Wert wieder so umändere, dass der Alarm wieder scharfgestellt ist.
Was haltet ihr davon?
Freue mich auf eure Antworten!
Gruß Flo
Hallo
Habe auf meinem Server eine Datei, die von einem PHP-Script per Cronjob aller halben Stunde auf die letzte Dateiänderung geprüft wird. Falls die Änderung länger als eine halbe Stunde zurückliegt, wird automatisch eine Mail ("Alarm") versendet. Das Problem ist nun, dass ich jetzt jedes mal eine Mail bekomme, wenn die Datei nicht mehr aktuell ist. - So soll es ja auch sein
Wie könnte ich es lösen, dass ich den Alarm zwischenzeitlich abstellen kann, also besser: der Alarm ( und damit das Script ) selber erst wieder von mir aktiviert werden muss??
Welches Intervall gilt für diesen Cronjob? Halbe Stunde oder kürzer? Dann löse den Alarm nicht aus, wenn die letzte Dateiänderung mehr als eine Stunde her ist.
Eine Vorüberlegung: in einer MySQL-Datenbank einen Wert ändern, der das Script verhindert nach dem ersten Versenden weitere Mails zu versenden, bis ich (durch bspw. ein weiteres Script) den Wert wieder so umändere, dass der Alarm wieder scharfgestellt ist.
Was haltet ihr davon?
Overkill! Das Anlegen einer 0-Byte-Datei mittels touch und Prüfen der Existenz dieser Datei wäre z.B. völlig ausreichend. Sorge dafür, dass bei Änderung der Datei die Prüfdatei gelöscht wird.
Freundliche Grüße
Vinzenz
Hallöchen,
Eine Vorüberlegung: in einer MySQL-Datenbank einen Wert ändern, der das Script verhindert nach dem ersten Versenden weitere Mails zu versenden...
... dürfte der sinnvollste Ansatz sein. Z.B. ein Wert "Alarm aktiv" mit normalerweise false.
Das Cronjob - Script dann in der Art ändern:
if ((älter als...) && (! Alarm aktiv)) { // erstmaliges Auftreten des Problems
Mail senden;
Alarm aktiv = true;
}
und um eine zweite Abfrage erweitern:
if((Alarm aktiv) && (jünger als)) { // also alles wieder OK
Alarm aktiv = false;
}
MfG
vaudi
echo $begrüßung;
Eine Vorüberlegung: in einer MySQL-Datenbank einen Wert ändern, der das Script verhindert nach dem ersten Versenden weitere Mails zu versenden...
... dürfte der sinnvollste Ansatz sein. Z.B. ein Wert "Alarm aktiv" mit normalerweise false.
Bist du sicher, dass es sinnvoll ist, das komplette Datenbankhandling durchzuführen statt file_exists(), touch() und gegebenenfalls noch unlink()? Die Datenbank-Lösung würde ich nur dann nehmen, wenn sowieso eine Datenbankabfrage für den Vorgang erforderlich ist.
Die Existenz einer Datei kann man übrigens auch im Shellscript recht einfach feststellen, Anlegen ebenfalls.
echo "$verabschiedung $name";
Hallöchen,
...wenn sowieso eine Datenbankabfrage für den Vorgang erforderlich ist.
Davon bin ich ausgegangen.
Ansonsten würde ich 00mer Vorschlag von Vinzenz zustimmen:
Dann löse den Alarm nicht aus, wenn die letzte Dateiänderung mehr als eine Stunde her ist.
bzw. relativiert: Löse den Alarm nur aus, wenn die letzte Änderung
((länger 1 Prüfungsintervall) && (kürzer als 2 Prüfungsintervalle))
zurückliegt.
Das würde nach meinem Verständnis
a) Versenden im Alarmfall
b) einmaliges Versenden und
c) Zurücksetzen des Alarms
in Einem abdecken, ohne irgend welche Variablenmanipulationen oder Schreiben / Löschen von Dateien.
MfG
vaudi
Hi!
Ich danke euch allen vielmals für die Tips!
Jetzt klappt es so wie ich es möchte! :-)
THX!
Flo