Cherche un script pour faire X traitements par seconde (limiter à X)

WRInaute passionné
Bonjour,

Je suis en train de développer un script shell en php (oui, ya pas que le Perl !) et mon besoin est le suivant :

Je dois lancer un appel à une fonction indéfiniment, mais je dois limiter cet appel à 10 appels par secondes maximum (temps de traitement de l'appel compris).

Avez-vous un bout de code tout prêt ?

merci d'avance.
lolo
 
WRInaute passionné
bon en faisant tourner mes neurones et en profitant d'un moment où j'étais moins paresseux, j'ai codé ceci pour les gens intéressés

Code:
while ( (!$maconditiondesortie) {

   $time = time();
   //print (date('Y-m-d H:i:s', $time)."\n");
   
   //mon traitement
   .................

   //ma boucle d'attente pour que mon traitement + l'attente ne descende pas en dessous de 6 secondes. Soit une limite de 10 traitements à la minute.
   while ( abs( time()-$time ) <= 6  ) {
   }
 }
 
WRInaute passionné
Ce n'est pas X traitements par seconde mais par minute donc...

Et pour si peu de traitements, t'as une drôle de façon de t'y prendre... pourquoi ne pas utiliser sleep ?
Le temps de traitement peut fortement varier ?
 
WRInaute passionné
oui, tu as raison, c'est par minute.

Le temps de traitement ne varie pas beaucoup et est négligeable vis à vis de la seconde. Le traitement doit être d'environ quelques 1/10e de seconde au maximum. En ce qui me concerne, c'est un appel SOAP avec attente d'une réponse.

Autre soucis, mon code faisait monter mon CPU à 90% ! 'tain ! heureusement que j'ai vu ça mais depuis 18h15 jusqu'à 20h55 mon serveur était à genou !!!

Je vais passer avec ton sleep(6)... et cela pourrait me convenir. Car cela fera un traitement + l'attente à 6,1 à 6,3 secondes au lieu de 6,0 secondes). Cela me convient, surtout vis à vis du CPU :)
Note : Sleep prend comme paramètre des secondes. Pour certaines personnes, cela peut être trop, et souhaiteraient des millisecondes, des dizaines ou des centaines.
 
Discussions similaires
Haut