Seltsames Verhalten. Wer hat eine Erklärung?

Hallo Forum,

im unten dargestellten Script geht es darum ein Logfile zu erstellen, in welchem die Kopfzeilen immer aktualisiert werden (MA und LAUF) und zusätzlich der letzte Eintrag immer unterhalb #BOF steht.

Weil dieses Logfile in eine Webseite zu verfolgen ist, dieses sich alle 10 sekunden erneuert, muss man im normalen ‚anhängen‘ immer wieder scrollen um den letzten Eintrag zu sehen. Mit u.g. Script könnte ich mir das ersparen.

Nun zum Problem(chen).
So wie das Script dort steht, läuft es wunderbar.
Wenn ich aber beim 2. Aufruf den logger-Aufruf mit ‚Satz 2‘ aktiviere klappt es nicht mehr. Ich kann es mir nicht erklären!

Remarke ich allerding die beiden ersten loger-Aufrufe nach ihren Aufruf und demarke dann den mit dem Satz ‚Satz 2‘ , DANN funktioniert es prima.

Wer kann mir bitte schön dieses Verhalten erklären?

Danke
Marc

<?php $GLOBALS["info"]["TEXT"]= "-------START EINLESEN-------\nStartzeit : ".<br /> date("d.m.Y@H:i:s",strtotime("now")).
 "\nMA : %ma%".
 "\nLAUF: %lauf%".
 "\n-------------------------------------------------------";
$GLOBALS["info"]["LAUF"]=1;
$GLOBALS["info"]["MA"]="TEST\_MA";

logger("","w");
logger("\nSatz 1");
//logger("\nSatz 1");


function logger($text,$type="a",$filename="../texte/logger.log")
{

 if($type==="a" && strpos($filename,"logger.log")){
 $handle=fopen($filename,"rb");
 $ftxt = fread ($handle, filesize ($filename));
 preg\_match('/(.\*#BOF)(.\*#EOF)/s',$ftxt,$res);
//print\_r($res);
 $t=$GLOBALS["info"]["TEXT"];
 $t=preg\_replace("/%ma%/",$GLOBALS["info"]["MA"],$t);
 $t=preg\_replace("/%lauf%/",$GLOBALS["info"]["LAUF"],$t);
 $text=$t."\n#BOF".$text.$res[2];
 $type="w";
// echo $text;
 }
 if($text==="" && strpos($filename,"logger.log"))
 $text=$GLOBALS["info"]["TEXT"]."\n#BOF\n#EOF";

 $d=fopen($filename,$type);
 fputs($d,$text);
 fclose($d);
}
?\>

ohne Dein Script jetzt genauer angesehen oder
verstanden zu haben sehe ich mehrer Möglichkeiten wie Du das eventuell lösen könntest…

  1. turn araound: Speichere Dir doch die Ausgabe in eine Datei und füge immer Deine neue Ausgabe an den Anfang hinzu… sprich $ausgabe="$aktuelleausgabe \n $ausgabe"; Dann haste den neuesten Eintrag oben und musst nicht scrollen

  2. Anker: Setze einen Anker… und ruf Die Seite dann mit logger.php#unten auf, schon springt er immer nach unten… Das Problem dabei ist, dass ein refresh, das aus dem header kommt glaub ich diese #anker nicht aufrufen kann…

  3. JavaScript: Da bin ich jetzt nicht so fit drin, aber soweit ich mich erinnern kann sollte es damit auch kein Problem sein rumzuspringen in der Seite… Evtl reicht es auch schon unten einen Button einzusetzen und dem dann den Focus zu geben… Gute Seiten für JavaScript sind nach meinen Erfahrungen www.irt.org und www.pigasus.de
    Wobei ich glaube dass ein onload auch ein focus aufrufen kann, das ohne JavaScript funktionieren sollte…

Ich hoffe dass ich dabei jetzt nicht ganz am Thema vorbeigeschrammt bin :wink:

hallo MunichFreak,

ich habe das Problem anders gelöst. Den Tip mit dem Anker probier ich
auf jeden Fall noch mal.

Vielen Dank dafür
Marc