Die folgende Abfrage muss nicht regelmäßig ausgeführt werden und könnte in einen Cron-Job verschoben werden:
DELETE FROM failures WHERE release_time < ?;
Diese "boolesche" Abfrage gibt 1 zurück, wenn die Person auf der schwarzen Liste steht, andernfalls 0:
SELECT
COUNT(ip_address) as blacklisted
FROM blacklist
WHERE
ip_address = ? AND
release_time > ? AND
failures > 5
Es könnte die Dinge beschleunigen, da Sie PHP nicht verwenden, um Zeilen zu zählen und Zahlen zu vergleichen:
if ($row['blacklisted']) { /* ... */ }
Ich glaube nicht, dass du letzteres wirklich vermeiden kannst.