Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks
Bibliothèques et frameworks Forum d'entraide sur les frameworks, templates, bibliothèques de code (PDFLib, eZPdf, JpGraph, Artichow, PEAR, etc). Avant de poster : FAQ bibliothèques, toutes les FAQ PHP et cours bibliothèques
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/04/2008, 17h19   #1
Nouveau Membre du Club
 
Avatar de messier79
 
Inscription : avril 2003
Messages : 117
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : avril 2003
Messages : 117
Points : 31
Points : 31
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
messier79 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2008, 17h33   #2
Nouveau Membre du Club
 
Avatar de messier79
 
Inscription : avril 2003
Messages : 117
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : avril 2003
Messages : 117
Points : 31
Points : 31
Voici un bout de code pour aider :

Voici le code qui cree les differents threads :
Code :
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.
messier79 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2008, 14h55   #3
Nouveau Membre du Club
 
Avatar de messier79
 
Inscription : avril 2003
Messages : 117
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : avril 2003
Messages : 117
Points : 31
Points : 31
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.
__________________
Mon ordinateur ne fait jamais ce que je veux. Il ne fait que ce que je lui demande.
messier79 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h22.


 
 
 
 
Partenaires

Hébergement Web