Marvin Esse: Wie kann ich am sinnvollsten den Text durchsuchen?

Beitrag lesen

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