Gunnar Bittersmann: Wie kann ich am sinnvollsten den Text durchsuchen?

Beitrag lesen

@@dedlfix

Für die zweite würde ich ein Array mit Timestamps (die Uhrzeit als Strings geht ebenso) als Keys anlegen und mit einem Array als Wert, in dem die IP-Adressen zu diesem Zeitpunkt abgelegt sind.

Wär’s nicht besser andersrum? Die IP-Adressen als Keys mit einem Array von Timestamps/Strings als Wert:

$ipAddresses = array(
	'91.200.12.153' => [
		'23.01.2018 08:00:47',
	],
	'91.200.12.13' => [
		'23.01.2018 08:00:47',
		'23.01.2018 08:01:13',
		'23.01.2018 08:01:14',
		'23.01.2018 08:05:34',
		'23.01.2018 08:05:39',
	],
	'91.200.12.82' => [
		'23.01.2018 08:01:12',
		'23.01.2018 08:03:47',
		'23.01.2018 08:05:37',
	],
);

Dann kann man mit

foreach ($ipAddresses as $ipAddresse=>$timestamps)
{
	if (count($timestamps) >= 5)
	{
		// do something
	}
}

für jede IP-Adresse einfach prüfen, ob sie 5 oder mehr Mal auftritt.

(Das könnte man vielleicht auch gleich während der Erzeugung des Arrays mit erledigen, aber da steht auch wieder Performanz gegen Wartbarkeit. Eine Methode sollte nur ein Ding tun …)

Und für jede IP-Adresse prüfen, ob 3 (oder mehr) Timestamps innerhalb von 3 Sekunden liegen. Wozu es sicherlich ratsam ist, bei der Erzeugung des Arrays die Zeit-Strings in Timestamps umzuwandeln.

LLAP 🖖

PS: Code ungetestet; seht ihn als Pseudocode an.

--
“When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory