Tom: access_log

Beitrag lesen

Hello,

ja ich hab mich doof ausgedrückt..

wenn ich die access_log immer von position x bis zum ende auslese und mir die neue position merke, weiss ich bis wo hin ich daten gespeichert habe und kann das immer wieder wiederholen.

Ich finde nur keinen weg VON positon auszulesen. Das BIS ist kein Problem.

die access_log wir doch dann nach wie vor archiviert!

Ach so...
Du willst das nicht neu machen, sondern nur was reinschmuddeln.

Das kann dann aber in die Hose gehen, wenn dir logrotate zuvorkommt oder dazwischenhaut.
Du müsstest dann besser versuchen, das Trigger-Script für logrotate zu finden, und dort Deine private Auswertung noch reinbauen.

Jedenfalls könnten Die sonst Daten "unterschlagen" werden.

Das Lesen von einer Dateiposition macht man, indem man den Dateizeiger bis dahin vorlaufen lässt.

fseek()  http://www.php.net/manual/en/function.fseek.php

Wenn Du dein Format vernünftig eingestellt hast, dann kannst Du mit
fgetcsv()  http://www.php.net/manual/en/function.fgetcsv.php
die Zeilen auslesen. Das hält ja immer hinter einem "Zeilenende" an.
Das machst Du solange nicht
feof()  http://www.php.net/manual/en/function.feof.php
Nach dem Ende merksts Du dir dann die Stelle in der Datei mittels
ftell() http://www.php.net/manual/en/function.ftell.php

Den Wert musst Du Dir irgendwo merken.
Außerdem musst Du Dir merken, welche Version der Datei es ist.
Da habe ich noch keine Vorstellung, wie man das herausbekommen soll, außer über den Inhalt.

Also zuerst die erste Zeiel der Datei auslesen und auswerten
Wenn deren Datum und Uhrzeit schon in Deiner Kontrollliste stehen, vorspulen mit fseek() bis zur gemerkten Stelle (denk an das n-1 bzw. n+1-Problem...) und bis zum Ende auslesen.
In der Kontrolldatei eintragen, dass die Datei, die mit xyz anfängt, nun bis Stelle Z gelesen ist.

So könnte es gehen.

Kritisch ist nur die Phase, wenn noch logged wurde, Du aber noch nicht gelesen hast und logrotate tätig wird. Dann fehlen Dir ggf. etliche Datensätze.
Du solltest also dafür sorgen, dass direkt davor Dein Script nochmal ausgeführt wird.

Die Dateioperationen als solche musst Du so kurz wie möglich halten, damit Du das System nicht aufhältst. Auswerten kannst Du, wenn alles wieder freigegeben ist.

Und denk an die Sperren für Deinen Prozess.

Harzliche Grüße vom Berg
http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau