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] Multithreading en PHP avec Curl


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de messier79
    Homme Profil pro
    Inscrit en
    Avril 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2003
    Messages : 124
    Par défaut [cURL] Multithreading en PHP avec Curl
    Bonjour

    Mon probleme de base etait de simuler un systeme multithread en PHP afin de pouvoir gerer differentes sockets en parallele.
    Apres quelques recherche, je suis tombe sur ce code :
    http://netevil.org/blog/2005/may/guru-multiplexing

    Ce systeme fonctionne, mais le hic, c'est que la fonction 'stream_select' ne fonctionne pas sur les plateformes 64 bits :
    http://bugs.php.net/bug.php?id=32979

    J'ai donc cherche une alternative et j'ai trouve ca :
    http://www.ibuildings.com/blog/archi...with-CURL.html

    Curl fonctionne bien, mais j'ai encore un probleme. Dans chaque processus cree, je veux creer une socket qui fonctionnera de maniere independante. Or, toutes les sockets creees font reference a la meme ressource, du coup, il y a des interferences...

    La librairie Curl possede une fonction 'curl_multi_select' qui serait supposee pouvoir remplacer 'stream_select', mais je ne peux trouver nulle part comment l'utiliser...

    Bon, merci, si vous etes arrive(e) jusque la

    Voila si quelqu'un a une idee, un exemple ou une experience a me proposer pour pouvoir creer un multithreading qui fonctionne, merci

  2. #2
    Membre confirmé Avatar de messier79
    Homme Profil pro
    Inscrit en
    Avril 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2003
    Messages : 124
    Par défaut
    Voici un bout de code pour aider :

    Voici le code qui cree les differents threads :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    $mh = curl_multi_init();
    ...
    					// create a new single curl handle
    						$ch = curl_init();
     
    						// setting several options like url, timeout, returntransfer
    						// simulate multithreading by calling the wait.php script and sleeping for $rand seconds
    						curl_setopt($ch, CURLOPT_URL, $this->urlToCall.'?idIP='.$idIP.'&port='.$port.'');
    						curl_setopt($ch, CURLOPT_HEADER, 0);
    						curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    						curl_setopt($ch, CURLOPT_TIMEOUT, 30);
     
    						// add this handle to the multi handle
    						curl_multi_add_handle($mh,$ch);
     
    						// put the handles in an array to loop this later on
    						$handles[] = $ch;
    Ensuite, j'utilise fsockopen pour creer mes sockets.

  3. #3
    Membre confirmé Avatar de messier79
    Homme Profil pro
    Inscrit en
    Avril 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2003
    Messages : 124
    Par défaut
    Bon, apres plusieurs tests, il s'est avere que cURL ne convenait pas. Je pouvais bien effectuer plusieurs connexions / traitement simultanes, mais je ne pouvais pas le faire sur plusieurs sockets.
    Donc, je suis revenu a la fonction stream_select de PHP5 :
    http://fr.php.net/manual/fr/function.stream-select.php

    Je n'avais d'abord pas retenu cette methode a cause d'un bug de PHP qui bloquait son utilisation sur plateformes 32 bits.
    Mais le bug a depuis ete corrige pour les version 5.2.3+ de PHP.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/03/2012, 22h47
  2. [cURL] Passer un proxy avec PHP 5
    Par sergei88 dans le forum Bibliothèques et frameworks
    Réponses: 21
    Dernier message: 15/04/2010, 16h33
  3. php redirection avec cURL conserver session
    Par allaf dans le forum Langage
    Réponses: 4
    Dernier message: 15/04/2009, 16h48
  4. [cURL] Copie de fichier avec Curl
    Par eowene dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 17/11/2006, 15h03
  5. [cURL] Gérer le proxy avec curl
    Par DaSoul dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 24/03/2006, 23h18

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