Suche Script: Zustand Speichern.

Hallo zusammen,

ich habe jetzt eine ganze weile nach einer lösung gesucht aber nicht wirklich was produktives gefunden.

Zu meinem Problem:

Ich suche ein Script das mir beim aufruf etwas in eine Textdatei schreibt.

Etwa so: (Datum:Uhrzeit:beliebiger Text). (Text im Script definiert)

Da die Datei bereits besteht sollten die Daten angehängt werden.

Ich benötige dieses Script um die funktion von einigen komponenten auf zuverlässigkeit zu überprüfen, auf einen längeren zeitraum hin.

Gibt es etwas vergleichbares bereits, wenn ja wo?

Gruss Michael

Bitteschön:


$log_txt = "Hier Dein Text oder $Variable";
$log_time = date("d.m. H:i:s", time());
$file =  IPS_GetKernelDir()."scripts\logfile.txt";
 
$handle=fopen($file, "a");
fwrite($handle, $log_time.", ".$log_txt."
");
fclose($handle);

Hallo,

aber was passiert, wenn diese Datei von zwei oder mehr Scripten beschrieben wird? Und das eventuell zur gleichen Zeit? Also ist es besser, das so zu machen:


$log_txt = "Hier Dein Text oder $Variable";
$log_time = date("d.m. H:i:s", time() );
$file =  IPS_GetKernelDir()."scripts\logfile.txt";

$handle=fopen($file, "a");
$canwrite = False;
while ( !$canwrite ) {
   $canwrite = flock ( $handle, LOCK_EX );
   if ( !$canwrite ) {
      $miliseconds = rand ( 0, 20 );
      usleep ( round ( $miliseconds * 100000 ));
   }
}
fwrite($handle, $log_time.", ".$log_txt."
");
fclose($handle);

Was hier noch fehlt, sind die Fehlerbehandlungen der File Operationen, also fcopen, fwrite und fclose. Auch das sollte man noch vervollstaendigen.

Hallo,

man könnte, vorausgesetzt es handelt sich um eine IPS V2, das Problem mit Mehrfachzugriffen auch über Semaphoren lösen. Dann würde Ferengi-Masters Beispielskript wie folgt aus sehen:

Diese Variante wartet 50 bis 100ms sollte bereits ein anderes Skript die Semaphore aufgerufen haben. Wird die Semaphore in dieser Zeit nicht freigegeben, so wird ein entsprechender Hinweis im IPS-Log geschrieben.

Hallo,
so ein script hat mir noch gefehlt. Aber, warum schreibt er mir Datum und Uhrzeit als 01.01. 01.00.00, und zwar jedesmal?
Gruß
Jürgen

Hallo Jürgen,

gute Frage.

int $Timestamp fehlt :rolleyes:

Werde das oben gleich mal noch ändern.

Ist es den nicht Sinnvoller mit einer MYSQL Datenbank zu arbeiten ?

Hallo zusammen,

vielen Dank für die Scripte, hilft mir sehr weiter.:):slight_smile:

@Torro, danke für den Hinweis des mehrfachzugriffes, da hatte ich nicht dran gedacht und werde das berücksichtigen.

@ckerndl, denke für diesen speziellen Fall ist das nicht nötig da ich nur sporadisch etwas testen möchte und keine Dauerüberwachung machen möchte aber trotzdem, Danke.

Gruß Michael

Was hier auch noch fehlt ist eine Klammer :wink:

Gruß
Rubberduck