cURL multi prend tout mon cpu!

Pour un projet j’utilise de façon assez intensive cURL multi dans mes scripts et je me suis rendu compte qu’il me prennait quasiment 100% de mon cpu.

// Préparation des handles cURL
 
do
{
    curl_multi_exec($mh, $running);
}while($running>0);
 
// Traitement des requetes

C’est biensûr la boucle do … while qui est en cause ici.

Pourtant il y a une méthode simple pour indiquer à cURL d’attendre tant qu’il y a de l’activité sur un handle. Méthode que je ne connaissais pas et que voici :

Il suffit d’utiliser curl_multi_select()

// Préparation des handles cURL
 
do
{
    curl_multi_exec($mh, $running);
    $ready = curl_multi_select($mh);
}while($running>0 && $ready!=-1);
 
// Traitement des requetes

C’est tout, mon script est passé de 100% de charge à environ 2%.

Laisser un commentaire