2010-11-18 11 views
2

J'utilise curl_multi_exec en php pour vérifier l'état d'un certain nombre d'URL. Je veux comparer cela pour que, pour un système donné, je sache combien de gestionnaires je peux vérifier de manière synchrone avant que curl ne commence à faire la queue. Quelqu'un at-il de l'expérience sur la façon d'évaluer la capacité?Combien de threads utilise curl_multi_exec?

Merci,

Adam

+0

Vous pouvez utiliser 'netstat' et regarder le nombre de connexions actives qu'il ouvre. Puis augmentez le nombre d'urls jusqu'à ce que vous constatiez que le compte de netstat commence à tomber ... – ircmaxell

+0

Oui, j'y ai pensé mais la plupart des URL reviendront en moins d'une demi-seconde. Je vais essayer, merci! –

+0

Eh bien, créez un site sur le même serveur (ou un autre local). Créer une page qui dort juste pendant 60 secondes ou plus. Ensuite, ouvrez une tonne de connexions à cette page. Cela devrait être assez long pour que vous obteniez une sortie significative de 'netstat' tout en étant facile et rapide à construire ... – ircmaxell

Répondre

2

Vous pouvez voir à partir du code source PHP qu'il utilise select() et lit non-blocage. Donc, un seul processus est utilisé.

Notez que select() échouera, si vous lui attribuez un descripteur de fichier avec fd> = FD_SETSIZE. La limite FD_SETSIZE est définie lors de la compilation de PHP. La valeur par défaut semble être 256. Il serait préférable d'utiliser poll() dans l'implémentation de PHP.

A propos de l'utilisation correcte curl_multi_exec():

curl_multi_exec() doit être suivie curl_multi_select(). Cela attendra les données disponibles, au lieu de les vérifier dans une boucle occupée. Le example in the PHP manual est bon.