Hi!
Beide Fragen habe ich vor über einem Jahr hier schon mal gestellt. Damals konnte auch keiner helfen. Würde mich freuen, wenn sich das geändert hätte. Ich weiß leider bis heute keine Lösdung dafür.
Hm, man könnte auch irgendein Programm schreiben, welches die Logfiles beobachtet, und wenn x Anfragen mit einem REMOTE_USER mit einem 401 beantwortet werden diesen User aus der Passwort-Tabelle temporär löschen. Das ist eigentlich schon das wichtigste. Nur - wie macht man das? Ich habe mal gehört dass man ein Programm schreiben kann welches sich irgendwie an die Logfiles "hängt", aber wie funktioniert das? Mir würden nur reichlich ineffiziente Wege einfallen so ein Logfile ständig zu beobachten. Man bräuchte einen Dämon-Prozess der automatisch die neuen Einträge bekommt, wie auch immer das aussieht, aber wie geht das? Also immer nur die geänderten Daten einlesen? Und das am besten automatisch und nicht alle paar Sekunden von alleine, oder?
Naja man könnte sich vielleicht die letzte Stelle merken wo letztesmal EOF war, und dann von da anfangen die Datei auszulesen, in PHP könnte da vielleicht fseek() helfen. Aber das Problem sind ja dann die konkurrierenden Zugriffe des Apachen, das heißt man müsste den FP wohl andauernd neu herstellen, Rest auslesen und wieder schließen. Und dann muss man aufpassen dass man sich nicht ohne Ende Daten in den RAM schaufelt, also am besten wohl immer Daten in einen String lesen, analysieren und am ende = '' setzen, oder?
Naja, wie würdet Ihr das machen, oder würdet Ihr ganz woanders ansezten?
Im Moment stelle ich mir sowas vor(kann es leider gerade nicht testen):
<?php
$last_position = 0;
while(TRUE) {
$fp = fopen ('/path/to/error-log','r'); // 401 kommt glaube ich auch da rein, oder?
fseek($fp, $last_position);
while(($line = fgets($fp)) !== false) {
check_auth($line); // was auch immer da gemacht wird
}
$last_position = ftell($fp);
fclose($fp);
sleep(10);
}
?>
Grüße
Andreas