nette Anwendung, die Du da am entwickeln bist.
Ich hätte da vielleicht noch ein paar Anregungen, die ich auch bei mir für ähnliche Fälle eingebaut habe.
Für den Fall, dass Du so wie bisher vorgehen möchtest (d.h. Datei lesen und die letzten 10 Zeilen zur Anzeige bringen) würde ich nicht jedesmal die Datei neu lesen und das Makro ausführen, sondern nur wenn sich etwas geändert hat. Dafür kann man mittels php das Änderungsdatum der Datei auslesen und mit einem in Studio zwischengespeicherten Wert vergleichen. Dazu muß in Studio eine Variable vom Typ Zahl existieren. Beispielhaft habe ich das Objekt, welches das Makro enthält, mal "Alarmobjekt" genannt, dort ist die Variable "LastFileMod" vom Typ Zahl mit Startwert 0 definiert.
Das Makro kann nun alle 5 sek. laufen, die Datei wird aber nur gelesen wenn sie geändert wurde, entsprechend wird auch nur dann die Ausgabe in Studio geändert.
Das würde so aussehen:
Code: Alles auswählen
<?
$datafile = 'c:\feuerwehr-sms\webalarm\alarmierung.txt';
if (File_exists($datafile)) {
// Letztes Mod-Datum der Datei lesen
$ModTime = filemtime($datafile);
//vergleichen des Modifikationsdatums der Datei mit dem in Studio zwischengespeicherten Wert
if ( $ModTime != $V_Alarmobjekt_LastFileMod ) {
/*
hier kommt Dein bisheriger php-Code rein
*/
// Makro ist durch, also LastFileMod neu setzen
$V_Alarmobjekt_LastFileMod = $ModTime;
}
} else {
// hier kann etwas stehen, was bei Datei unlesbar ausgeführt wird, z.B. eine Variable in Studio entsprechend schreiben
}
?>
Weitere Überlegung: Warum 10 Zeilen lesen und nicht nur die letzte? Einzig nach einem Studio-Start wäre die Liste kurz, erst nach weiteren 9 Meldungen hättest Du wieder die letzten 10 angezeigt.
Vorteil: Die Formatierung in Studio ist einfacher, da Du ja nur
Code: Alles auswählen
Anzeige := NeueMeldung + "<<" + Anzeige
Ausserdem wäre eine Auswertung nach Wichtigkeit einfacher, da immer nur die letze Meldung verarbeitet werden musst und das wird immer nur getan, wenn sich etwas geändert hat!
Letzte Zeile vom Array bekommst Du mit array_pop.
Da es sein kann, dass Studio Probleme macht, wenn eine Variable (in diesem Fall Anzeige) immer größer wird habe ich hier ein paar php Zeilen geschrieben, die die Ausgabe zeilenweise begrenzt. Das würde ich bei o.g. Vorgehen mit einbauen.
Auswerung nach Wichtigkeit: Kannst Du da mal Beispiele posten, wie sich die Meldungen unterscheiden und was dann jeweils passieren soll. ....riecht so ein bisschen nach regulären Ausdrücken, die da angewendet werden möchten...
Viel Erfolg!
Sanys