Vous n'êtes pas identifié(e).

  • Contributions :
  • Vos boîtes de messages privés sont vides.

Annonce

Participez au Concours Seo 2016 Officiel ! | Faites un bond en avant avec la formation SEO Ranking Skills le 12 Avril 2017

#1 2016-01-18 10:28:53

Mention duan78
Scout
Lieu : Paris
Inscription : 2012-08-31
Messages : 589

Audit et Analyse
Sémantique
Marketing
Social Engineering
Site Web

[PHP] La meilleure façon selon vous de faire du "multithread" en Curl?

Bonjour la communauté,

Je viens vers vous ce jour avec une question à laquelle plusieurs d'entre vous ont surement déjà été confrontés :

Pour un projet sur lequel je travail en PHP, je suis ammener à faire plusieurs requêtes curl l'une après l'autre ... Mon problème est donc simple, mon application est très lente car elle doit effectuer tout les curl un après l'autre pour me renvoyer une réponse.

Ma question est donc simple, comment traiteriez-vous cette problématique ?

Petits indices et pistes de réflexion : Utilisation d'ajax pour paralléliser les curl, utilisation de memcache pour simuler un multithread (on garde les variable dans memcache), Utilisation de bibliothèques déjà faites -multicurl paralelcurl etc.- (peu pertinent)

Merci d'avance pour vos réponses


Arnaud BOYER, eMarketing Manager @ Label Group

Hors ligne

#2 2016-01-18 12:34:59

Mention NicolasWeb
Soldier
Lieu : Besançon (France)
Inscription : 2015-09-30
Messages : 407

Rédaction
Sémantique
Python
Site Web

Re : [PHP] La meilleure façon selon vous de faire du "multithread" en Curl?

Il y a pas mal de solutions...

Tu peux déjà tenter de faire le curl avec la commande "curl" linux et en exécuter un paquet à la fois (avec "&"  et "exec" en PHP http://php.net/manual/fr/function.exec.php ).
J'ai déjà fait cela, ensuite on plaçant le résultat de la commande linux curl dans une base de données.

Ou alors tu peux même exécuter un script PHP depuis un autres script PHP : là encore avec une commande "exec" du genre "php monscript.php &".

Tu as aussi les threads PHP ( http://php.net/manual/en/intro.pthreads.php )  j'ai pas d'expérience là dessus, notre directeur technique nous l'avait déconseillé il y a quelques années (je n'ai jamais su pourquoi)...

L'utilisation d'Ajax me semble pertinente dans la plupart des cas : on utilise le javascript pour lancer les threads en parallèle. Mais, après il faut utiliser un navigateur ou un truc comme phantomjs (ce qui n'est pas nécessairement une contrainte en soi, c'est juste que ça ajoute encore plus de choses à maintenir).

Bon courage.


Mes tools SEO gratuits →SeoSoftwareNow.com  ∙ Me contacter

Hors ligne

#3 2016-01-18 15:09:06

Mention jeromeweb
Soldier
Lieu : pas loin de paris
Inscription : 2014-10-12
Messages : 973

PHP
Automatisation Web

Re : [PHP] La meilleure façon selon vous de faire du "multithread" en Curl?

Je pense que le cURL en multi thread peut régler ton problème.

Sur certains de mes scripts, ça bloquait de temps à temps car certains pages mettaient très longtemps à charger (=un serveur qui rame). Toi comme tu cURL à le suite, 1 URL qui met 10 secondes à charger pas ex ça te plombe tout le script
Tu peux mettre un timeout de 1 ou 2 secondes comme ça tu ne seras plus bloqué par ce genre de pb et refaire ton curl à la fin juste sur les URL lentes, voir si ça change qqch


Blog perso jeromeweb.net - site pro : jerome-pasquelin.fr

Hors ligne

#4 2016-01-18 15:13:16

Mention Mitsu
Soldier
Inscription : 2014-11-17
Messages : 1 738

Développement PHP
Développement JS
Audit et Analyse
Netlinking
Site Web

Re : [PHP] La meilleure façon selon vous de faire du "multithread" en Curl?

+1 tu as la possibilité en natif de faire du curl en multi thread : http://php.net/manual/en/function.curl-multi-exec.php .
Moi j'ai pas encore testé, en fait sur un vps j'ai un script qui curl, je l'execute le même script "php monscript.php", évidemment faut que le script soit pensé pour gérer ça.


Mitsu, un Expert SEO qui se fait une joie de partager ses délires sur internet...

Hors ligne

#5 2016-02-17 11:01:02

Mention ciboulette
Soldier
Inscription : 2015-11-01
Messages : 278

Re : [PHP] La meilleure façon selon vous de faire du "multithread" en Curl?

Ba deja de ton Curl tu en attend quoi? tu stock juste les page? (je pense pas) ou tu analyse des choses dessus?

Sinon sur la doc PHP tu as une page pour ça : http://php.net/manual/fr/refs.fileprocess.process.php

Hors ligne

#6 2016-02-17 11:24:16

Mention DevForEver
Recruit
Inscription : 2016-02-16
Messages : 51

PHP
JAVA
DB Admin
Sécurité

Re : [PHP] La meilleure façon selon vous de faire du "multithread" en Curl?

retour d'expérience:

1. création d'1 script parseur en php via CURL avec un GET puis un POST

2. Méthode 2 min bidouille
dans une page HTML, le script est lancé 20 x en parallèle via Ajax. Dès que les 20 réponses sont parvenues, la page HTML se rafraichit.

Ben, ça fait 3 ans que le serveur tourne ainsi à 80 000 requêtes / jour big_smile

L'ajax est une solution qui fonctionne sans devoir reprendre la méthode de faire les requêtes.

Hors ligne

#7 2016-04-24 13:27:31

Mention otassel
Recruit
Inscription : 2016-04-24
Messages : 13

Netlinking
Networking SEO
Développement PHP
Adminstration Serveur

Re : [PHP] La meilleure façon selon vous de faire du "multithread" en Curl?

Je te conseille de délaisser Curl au profit de Guzzle 6. Tu pourrais utiliser la classe "Pool" pour répondre à ton besoin : http://docs.guzzlephp.org/en/latest/quickstart.html?highlight=pool#concurrent-requests (avec éventuellement la fonction non documentée "batch" https://github.com/guzzle/guzzle/blob/master/src/Pool.php#L94)

Hors ligne

#8 2016-05-25 08:08:09

Mention Egres
Scout
Lieu : In the clouds
Inscription : 2012-08-14
Messages : 173

Développement PHP
Adminstration Serveur
Content Spinning
Sémantique
Site Web

Re : [PHP] La meilleure façon selon vous de faire du "multithread" en Curl?

php, curl : un rolling multicurl qui va bien (php comme hhvm)

https://github.com/LionsAd/rolling-curl
https://github.com/chuyskywalker/rolling-curl

penses juste à ce que tu fetches. Si tout sur le même serveur, il va te falloir limiter le nombre de requêtes en // sinon risque de DOS le serveur.


Fan de WP, de spin et de génération de contenu en général.
Penguinzophren : lex est quod referencus

Hors ligne

#9 2016-05-25 10:04:07

Mention KrustyHack
Soldier
Inscription : 2015-12-02
Messages : 497

Adminstration Serveur
Sécurité
Automatisation Web
Développement Python
Site Web

Re : [PHP] La meilleure façon selon vous de faire du "multithread" en Curl?

Ay,

Je sais ce n'est pas du PHP mais ça peut toujours servir: http://serverfault.com/questions/248143/multithreaded-downloading-with-shell-script smile


Infrastructure, VPS, serveurs, ... J'ai forcément ce qu'il te faut, alors contacte-moi !

Hors ligne

#10 2016-05-25 15:26:21

Mention otassel
Recruit
Inscription : 2016-04-24
Messages : 13

Netlinking
Networking SEO
Développement PHP
Adminstration Serveur

Re : [PHP] La meilleure façon selon vous de faire du "multithread" en Curl?

Tu as aussi la possibilité de créer des workers PHP (encapsulé dans un container Docker par exemple) avec l'utilisation d'un système de message queuing : c'est ce que j'utilise de mon côté mais en Node JS qui plus adapté pour ce type de besoin.

Hors ligne

Pied de page des forums