sql >> Database teknologi >  >> RDS >> Mysql

IP Blacklist i PHP+MySQL

Følgende forespørgsel behøver ikke køre regelmæssigt og kan flyttes til et cron-job:

DELETE FROM failures WHERE release_time < ?;

Denne "booleske" forespørgsel returnerer 1, hvis personen er sortlistet, ellers 0:

SELECT
  COUNT(ip_address) as blacklisted
FROM blacklist
WHERE
  ip_address = ? AND
  release_time > ? AND
  failures > 5

Det kan fremskynde tingene, da du ikke bruger PHP til at tælle rækker og sammenligne tal:

if ($row['blacklisted']) { /* ... */ }

Jeg tror egentlig ikke, du kan undgå det sidste.




  1. Hvorfor kan jeg ikke bruge alias i en count(*) kolonne og henvise til det i en have-sætning?

  2. Indsæt hurtigt 2 millioner rækker i SQL Server

  3. php-fejl ved brug af lagret procedure

  4. Hvordan skriver man en indre forespørgsel, der returnerer den seneste besked for en given bruger?