IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

cURL - Trop de connections


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 2
    Points : 3
    Points
    3
    Par défaut cURL - Trop de connections
    Bonjour,

    Problème : Dans un script php, j'utilise cURL pour faire plusieurs requêtes (curl_exec) sur un service web et récupérer son résultat.
    Cependant, au bout d'un certain nombre de requête (environ 3) le service web répond Fault: Connection Failed: All available connections are in use. Try again later, même lorsque j'impose quelques secondes d'attente entre chaque (avec sleep) requête.
    Cela vient bien de mon script php et non du service car : quand j'utilise ce service web à la main, il ne renvoie pas cette erreur même lorsque je demande plusieurs requêtes très vite.

    Détails : La connection cURL utilisée est un singleton initialisée avec ces paramètres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
          self::$ch = curl_init(Params::$sms_test_url);
          // ...
          curl_setopt(self::$ch, CURLOPT_FORBID_REUSE, FALSE);
          curl_setopt(self::$ch, CURLOPT_FRESH_CONNECT, FALSE);
          curl_setopt(self::$ch, CURLOPT_TIMEOUT, 600);
     
          curl_setopt(self::$ch, CURLOPT_HTTPHEADER, array(
                                   'Connection: Keep-Alive',
                                   'Keep-Alive: 300'
          ));
          curl_setopt(self::$ch, CURLOPT_MAXCONNECTS, 1);
          curl_setopt(self::$ch, CURLOPT_CONNECTTIMEOUT, 600);
    que je crois être les bons pour n'avoir qu'une seule connexion au service web (comme quand je l'utilise "à la main").

    Résolution du problème (non satisfaisante) : je garde une connexion cURL unique et j'impose 3 minutes d'attentes toutes les deux requêtes (curl_exec). Là, il n'y a plus de Fault, les requêtes se font bien.
    Je suspecte donc la commande curl_exec de faire plusieurs connexions plutôt qu'en utiliser une. Les 3 minutes d'attentes permettant de relâcher les deux connexions faites par les deux requêtes.

    Demande : j'aimerais donc savoir d'où viennent les connexions multiples par curl et les empêcher (= imiter le comportement "à la main", où une connexion est utilisée et donc où les requêtes se font toutes bien).

    Voilà, j'ai essayé d'être clair et de donner des détails, je remercie ceux qui voudront m'aider.

  2. #2
    Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Après avoir longuement cherché puis essayé, j'en conclus qu'avec cURL, on peut faire une connexion persistante à condition, à un moment, de préciser toutes les requêtes qui seront faites sur cette connexion. En fait, la connexion permanente suppose de ne faire qu'un seul curl_exec.

    Pour mon programme, les requêtes étaient construites en fonction des résultats des précédentes. Donc cURL et sa connexion permanente ne s'adapte pas.

    J'ai tout de même remédier à mon problème en utilisant une interface plus bas niveau : les sockets.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Librairie curl : 35 SSL CONNECT ERROR
    Par thomas.fr dans le forum Windows
    Réponses: 0
    Dernier message: 04/02/2009, 16h31
  2. [FTP] curl connection probleme
    Par drKzs dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 27/03/2008, 12h35
  3. Réponses: 16
    Dernier message: 17/12/2007, 21h37
  4. Réponses: 2
    Dernier message: 24/04/2007, 16h56
  5. [SGBD] Mysqli : trop de connections
    Par xmag dans le forum SQL Procédural
    Réponses: 10
    Dernier message: 11/01/2006, 09h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo