Willkommen Gast. Bitte Einloggen oder Registrieren
 
Sprache wählen:
 
  Last Script Version: 20

  ÜbersichtHilfeSuchenEinloggenRegistrieren  
 
Seitenindex umschalten Seiten: 1
Thema versenden Drucken
Doku Logdatei-Reparatur (Gelesen: 16182 mal)
hr3
Global Moderator
*****
Offline


Es gibt nichts Gutes/
außer: Man tut es. E.Kästner

Beiträge: 1126
Germany
Geschlecht: male
Doku Logdatei-Reparatur
26.08.10 um 22:46:30
 
Werden beim Prüflauf Fehler festgestellt, wird die Anzahl und in der grauen Zeile darunter die entsprechende(n) Satz-Nummer(n) angezeigt. In diesem Fall wird die Auswahl Reparieren angeboten. Dabei werden alle Fehler korrigiert und die Sätze in die Zwischendatei log/logdb_temp.dta geschrieben. Anschließende werden die Daten wieder in die Originaldatei kopiert. Sollte das Programm bei der Reparatur abbrechen, kann somit anhand der Zwischendatei festgestellt werden, wie weit die Verarbeitung problemlos gelaufen ist und mittels der Originaldatei, welche Daten dieser Stelle folgen und ggf. den Abbruch ausgelöst haben.
Zum Seitenanfang
 
 
IP gespeichert
 
hr3
Global Moderator
*****
Offline


Es gibt nichts Gutes/
außer: Man tut es. E.Kästner

Beiträge: 1126
Germany
Geschlecht: male
Re: Doku Logdatei-Reparatur
Antwort #1 - 28.08.10 um 09:53:58
 
Für alle, die noch keine Profis in der PHP-Programmierung sind.

Auslöser für den Abbruch kann bei großen Datenvolumen (z.B. mehrere Millionen Sätze in der logdb_backup.dta) das Überschreiten von Max Execution Time bzw. in anderen Programmen auch Memory Limit sein.

Häufig sind die Error-Values für diese Zwecke ungünstig eingestellt und als Ergebnis sieht man nur eine leere Seite. Da auf den meisten externen Servern die Protokolldateien nicht öffentlich zugängig sind, ist die Ursache oft schwer erkennbar. Dann in fremden Programmstrukturen die Gründe und die richtigen Maßnahmen zu finden ist nicht einfach.

Eine erste einfache Hilfe kann die Ausgabe von Statusinformationen bei Schleifen-Verarbeitungen sein.

Eine wenig aufwendige Variante: jede Sekunde eine Meldung senden.
if(time()>=$x) {$x=time()+1; echo date('Y-m-d H:i:s').'<br>'; @flush();}

Oder etwas rechenintensiver: jede Sekunde den aktuellen Durchlaufzähler ausgeben
$i++; if(time()>=$x) {$x=time()+1; echo date('Y-m-d H:i:s ').$i.'<br>'; @flush();}

Zusätzlich kann wenn erforderlich mit memory_get_usage() die Größe des momentan verwendeten Speichers angezeigt werden.

Durch z.B. $x=time()+1; wird der Zeitintervall von einer Sekunde angegeben. Eventuell sind auch größere Abstände sinnvoll.

Häufiger als jede Sekunde sollte nichts ausgegeben werden, da sonst die Performance erheblich eingeschränkt wird und es ggf. auch Schwierigkeiten mit der Anzeige geben kann.

Konkretes Beispiel für repair.php
Code:
...
      while ( !FEOF ( $logfile ) )
       {
$i++; if(time()>=$x) {$x=time()+5; echo date('Y-m-d H:i:s ').$i.'<br>'; @flush();}
        //------------------------------------------------------------------------------
        $logfile_entry = fgetcsv ( $logfile , 6000 , "|" );
... 


Außerdem kann es sinnvoll sein, das Programm nicht über das Menü im Fenster sonder als Direktaufruf .../config/repair.php auszuführen.
Zum Seitenanfang
« Zuletzt geändert: 28.08.10 um 11:57:19 von hr3 »  
 
IP gespeichert
 
hr3
Global Moderator
*****
Offline


Es gibt nichts Gutes/
außer: Man tut es. E.Kästner

Beiträge: 1126
Germany
Geschlecht: male
Re: Doku Logdatei-Reparatur
Antwort #2 - 28.08.10 um 10:12:59
 
Eine Maßnahme bei zu großen Dateien kann sein, diese mittels Editor in 2 oder mehr Teile (auf Satzgrenzen achten) zu zerlegen, zu prüfen (ggf. korrigieren) und wenn Fehler festgestellt und bereinigt wurden die Ergebnisse wieder zusammen zu fügen. Sonst kann die Originaldatei zurückkopiert werden.
Zum Seitenanfang
 
 
IP gespeichert
 
hr3
Global Moderator
*****
Offline


Es gibt nichts Gutes/
außer: Man tut es. E.Kästner

Beiträge: 1126
Germany
Geschlecht: male
Re: Doku Logdatei-Reparatur
Antwort #3 - 29.09.10 um 20:38:14
 
Ein Fehler pro Datei ist bei einigen Dateien beim ersten Lauf dieser Routine normal und ohne Bedeutung. Bereits beim Anlegen wurde dort eine nicht notwendige Zeilenschaltung hinterlegt.
Zum Seitenanfang
 
 
IP gespeichert
 
hr3
Global Moderator
*****
Offline


Es gibt nichts Gutes/
außer: Man tut es. E.Kästner

Beiträge: 1126
Germany
Geschlecht: male
Re: Doku Logdatei-Reparatur
Antwort #4 - 29.09.10 um 21:17:53
 
Wenn viele fehlerhafte Sätze gefunden werden, kann es sein, dass der Button Reparieren durch den unteren Rand des Fensters verdeckt und damit unsichtbar ist. Wenn durch scrollen oder ziehen dieser Bereich nicht sichtbar gemacht werden kann, besteht auch die Möglichkeit diese Funktion über http://.../stat/config/repair.php direkt (ohne Fenster) aufzurufen.
Zum Seitenanfang
« Zuletzt geändert: 30.09.10 um 08:29:22 von hr3 »  
 
IP gespeichert
 
hr3
Global Moderator
*****
Offline


Es gibt nichts Gutes/
außer: Man tut es. E.Kästner

Beiträge: 1126
Germany
Geschlecht: male
Re: Doku Logdatei-Reparatur
Antwort #5 - 29.09.10 um 21:46:38
 
Empfohlener Ablauf für die Logdatei Reparatur:
  • ggf. Werte der Statistik-Übersicht dokumentieren (Hardcopy)
  • Wartungsmodus aktivieren
  • ggf. Verzeichnis log/ sichern
  • Logdatei-Reparatur durchführen
    Wenn nicht alle Fehler bereinigt wurden, für diese Datei solange wiederholen, bis keine Fehler mehr vorhanden sind, bzw. sich die Anzahl der Fehler nicht mehr verändert.
  • Statistik wieder aktivieren
  • Cache und Index neu erstellen
  • ggf. Werte der Statistik-Übersicht überprüfen



Wenn das Problem und dieser Lösungsansatz über das Forum kommuniziert wurden, unbedingt den Status zurück melden.
  • Wieviele Fehler wurden in welcher Datei erkannt und wieviele konnten ggf. nicht bereinigt werden?
  • Wurde der Neuaufbau für Counter und Index korrekt beendet?
  • Besteht das ursprüngliche Problem noch?
Zum Seitenanfang
« Zuletzt geändert: 30.09.10 um 06:44:05 von hr3 »  
 
IP gespeichert
 
Seitenindex umschalten Seiten: 1
Thema versenden Drucken