2010-11-24 19 views
0

Je suis en train de faire cette tâche qui consiste à envoyer 6 séries de 8 demandes par utilisateur, et un total d'environ 2000 utilisateurs. C'est un tas de requêtes GET, utilisées pour envoyer des commandes.Réduire l'utilisation du processeur cURL

Pour accélérer l'envoi, j'ai construit 4 multi-handles curl, chacun contenant 8 demandes, les tirant l'un après l'autre, puis continuant avec l'utilisateur suivant. Léger problème de manger 99% de mon processeur, et de manger seulement environ 5kb par seconde sur ma bande passante. Il n'y a pas de fuite ou quoi que ce soit, mais en envoyant 96000 requêtes, ça prend beaucoup de temps, en prenant environ 3 bonnes heures sur mon dual core AMD Phenom.

Existe-t-il des méthodes que je peux accélérer? Utiliser file_get_contents() au lieu de cURL finit par être 50% plus lent. Mais cURL utilise seulement 5 kbps, et mange mon CPU.

Répondre

0

Avez-vous essayé d'utiliser fopen() pour vos demandes au lieu de curl? Cela pourrait également être une charge sur où vous envoyez les demandes? Il ne reviendra pas tant que le serveur Web n'aura pas terminé la requête. Avez-vous besoin des données pour présenter l'utilisateur, sinon, pouvez-vous exécuter les requêtes en arrière-plan? La vraie question est pourquoi envoyez-vous autant de demandes, et il serait préférable de les consolider en moins de demandes. Vous avez beaucoup de variables dans cette configuration qui peuvent contribuer à la vitesse.