Limiter le nombre de requete php par minute

Limiter le nombre de requete php par minute - PHP - Programmation

Marsh Posté le 22-07-2004 à 12:30:17    

Bonjour,
J'aimerai limiter le nombre de requetes par minutes à 5.
Pour cela je stock les ip des visiteurs dans une table avec l'heure de la dernière connexion.
Là où je bloque c'est au nivo de la requete.
Je ne sais pas koi ou comment selectionner les champs ... (plutot de kel maniere parce que le select etc ... ça va :))
 
D'avance merci

Reply

Marsh Posté le 22-07-2004 à 12:30:17   

Reply

Marsh Posté le 22-07-2004 à 12:33:35    

yobogs a écrit :

Bonjour,
J'aimerai limiter le nombre de requetes par minutes à 5.
Pour cela je stock les ip des visiteurs dans une table avec l'heure de la dernière connexion.
Là où je bloque c'est au nivo de la requete.
Je ne sais pas koi ou comment selectionner les champs ... (plutot de kel maniere parce que le select etc ... ça va :))
 
D'avance merci


 
requete php ? tu veu dire l'acces a une page ?


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 22-07-2004 à 12:49:38    

bein... je vois pas le prob ...  
 
SELECT id FROM users WHERE heure_connect > $heure_actuelle+5min && ip=$ip
 
apres si ca te retourne un resultat ==> tu peu afficher la page, sinon non

Reply

Marsh Posté le 22-07-2004 à 14:57:26    

certes j'me suis conpliqué la vite pour rien ;)
Merci bcp ...

Reply

Marsh Posté le 22-07-2004 à 15:16:40    

esox_ch a écrit :

bein... je vois pas le prob ...  
 
SELECT id FROM users WHERE heure_connect > $heure_actuelle+5min && ip=$ip
 
apres si ca te retourne un resultat ==> tu peu afficher la page, sinon non


 
c'est ça k'il voulait ??  il me semblait ke non :  

yobogs a écrit :

J'aimerai limiter le nombre de requetes par minutes à 5.


 
or, ta requête parle de 5 minutes... lui, il veut 5 requêtes par minute et pas plus... or avec ta requête, ca joue pas... non?


---------------
Matt
Reply

Marsh Posté le 22-07-2004 à 18:05:26    

si c 5 reket sql par min je vois mal comment le faire (a part en fesant comme une reket mais dan un ficher)

Reply

Marsh Posté le 22-07-2004 à 18:12:05    

esox_ch a écrit :

si c 5 reket sql par min je vois mal comment le faire (a part en fesant comme une reket mais dan un ficher)


je ferais comme ca:
table: compteur
id (primary key, auto-increment), ip (char(15)), compte (tinyint), temps.  
 
puis avant de faire une requête, tu controles ke depuis une minute compte soit inférieur à 5. si ca fait + d'une minute, tu mets le compteur à 0. si le compteur est supérieur ou égal à 5, tu mets un message d'erreur. et sinon, c'est ok et alors tu incréments compte de 1...
 :pt1cable:  :pt1cable:  
ca marche ou ca marche pas ?  :??:


---------------
Matt
Reply

Marsh Posté le 22-07-2004 à 18:17:02    

je crois que c'est correct, mais j'ai quand même un doute :D :D


Message édité par SatanKoRn le 22-07-2004 à 18:17:24

---------------
Matt
Reply

Marsh Posté le 22-07-2004 à 20:14:17    

5 requêtes par minutes c'est 1 requête max pour 12 secondes
donc tu lis dans la table la date de dernière action :
- si date lu < date actuelle + 12 secondes : interdir l'action
- sinon : autoriser l'action et mettre à jour la table
 
et c'est tout  :)

Reply

Marsh Posté le 22-07-2004 à 20:15:17    

c'est correct :)


---------------
Matt
Reply

Marsh Posté le 22-07-2004 à 20:15:17   

Reply

Marsh Posté le 22-07-2004 à 22:38:42    

c'est surtout totalement faux :D
5 requetes en 1 minute, si j'ai envie d'en faire 3 en meme temps, et 2 en meme temps 59secondes + tard, j'ai le droit.
or avec le systeme de mathix, c'est pas jouable :p

Reply

Marsh Posté le 22-07-2004 à 22:58:47    

il faut une table avec une date / heure (on regarde pas les secondes) et un compteur pour cette date / heure, qui vaudra maxi 5 ;)

Reply

Marsh Posté le 22-07-2004 à 23:54:27    

Ils vont être content tes visiteurs abonnés à AOL, Noos ou Club-Internet ... Plutôt que de t'emmerder avec un script PHP tu devrais installer mod_throttle si tu es en dédié :)


Message édité par Core 666 le 22-07-2004 à 23:54:34
Reply

Marsh Posté le 23-07-2004 à 02:49:59    

Core 666 a écrit :

Ils vont être content tes visiteurs abonnés à AOL, Noos ou Club-Internet ... Plutôt que de t'emmerder avec un script PHP tu devrais installer mod_throttle si tu es en dédié :)

J'ai du mal à cerner le rapport avec la choucroute :o

Reply

Marsh Posté le 23-07-2004 à 02:58:26    

travailler sur 1 minute glissante :  
à l'initialisation du système, on a droit à 5 requetes.
 
à un instant t, il faut regarder si l'action au rang -5 a eu lieu 1min ou plus avant. Si c'est OK, alors action OK, sinon, action bloquée.
 
cela permet d'avoir un système non dépendant d'une date, d'une heure et une minute donnée.
 
Dès qu'un des 5 créneaux est "libre", il est à nouveau utilisable.


Message édité par T509 le 23-07-2004 à 02:59:05

---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Marsh Posté le 23-07-2004 à 03:03:01    

D'ailleurs je trouve la solution mysql totalement stupide, lui il veut limiter à 5 requêtes/min. Or avec les solutions utilisant mysql développées plus haut dans le topic, avec d'éxécuter chaque requête on en éxécute une autre pour savoir si on pourra éxécuter la requête "principale". Donc en se limitant à 5 requêtes, il en éxécute 10....

Reply

Marsh Posté le 23-07-2004 à 07:33:28    

mouais ... il faudrait déjà qu'il nous explique pourquoi il veut faire ça, ce serait plus simple ;)

Reply

Marsh Posté le 23-07-2004 à 10:24:48    

harrysauce a écrit :

J'ai du mal à cerner le rapport avec la choucroute :o


Le rapport c'est que les abonnées AOL et Noos sont connectés depuis le proxy de leur provider, et qu'une simple limitation par l'IP va rendre leur navigation impossible si le site a un minimum de trafic. Même problème pour ceux qui se connectent avec Club-Internet sans avoir configuré leur connexion à la main : le kit CI fait automatiquement passer le http par un proxy.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed