Hallo,
ich hoffe ihr verzeiht mir, mir ist kein besserer Betreff eingefallen 😟
Ich habe folgenden Text:
23.01.2018 08:00:47 crow [91.200.12.153] authentication failure
23.01.2018 08:01:12 alex1 [91.200.12.13] authentication failure
23.01.2018 08:01:12 Spam [91.200.12.82] authentication failure
23.01.2018 08:01:13 Alcala [91.200.12.13] authentication failure
23.01.2018 08:01:14 Rita [91.200.12.13] authentication failure
23.01.2018 08:03:47 Exmerge [91.200.12.82] authentication failure
23.01.2018 08:05:34 Heredia [91.200.12.13] authentication failure
23.01.2018 08:05:37 Test1 [91.200.12.82] authentication failure
23.01.2018 08:05:39 Traffic [91.200.12.13] authentication failure
Diesen würde ich gerne mittels PHP wie folgt durchsuchen:
- Welche IP-Adresse taucht mindestens 5 Mal auf?
- Welche IP-Adresse hat mehr als 2 Einträge innerhalb von 3 Sekunden?
- Die angezeigten Namen spielen dabei keine Rolle
Habt ihr eine Idee, wie ich das am geschicktesten umsetzen kann?
Momentan schwebt mir das so vor: Zuerst würde ich die Einträge in ein 2-dimensionales Array packen, Element 1 ist der Zeitstempel, Element 2 die IP-Adresse. Dann würde ich versuchen das Array nach IP-Adresse und innerhalb nach Zeitstempel zu sortieren. In einer Schleife (mit Gruppenwechsel) würde ich schonmal die Häufigkeit der IP-Adressen zählen können. Über diese Schleife könnte ich womöglich auch zählen, wieviele Einträge innerhalb eines Zeitintervalls auftreten. Alternativ könnte ich die Einträge in einer Hilfs-Tabelle speichern, dann wäre das Sortieren für mich zumindest einfacher (ein einfaches Order By ipadresse,zeitstempel) und ich hätte keine mehrdimensionalen Arrays.
Ist das ok oder doch zu kompliziert/umständlich gedacht?
LG Marvin