SecHunter : vos failles, avant les attaquants

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

#1 2016-01-18 11:28:53 · php, multithread, utilisation, memcache

Mention duan78
🥉 Scout12 ansConsommateur de liensPilier VClinicien IIIPremier secours IVAccueillant IVStratège IIBusiness man IIPolyvalent
Lieu : Paris
Messages : 589
Likes : 1
Audit et analyse Sémantique Stratégie marketing Réseaux sociaux
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

0
J'aime ❤️

🔴 Hors ligne

#2 2016-01-18 13:34:59 · php, script, javascript, commande, exécuter

Mention NicolasWeb
🥉 ScoutPilier VIPremier secours V10 ansReconnuClinicien IIIAccueillant IIIExpert SEO IVStratège IIPhilanthropeExpert IA et GEO IIExpert Outils et technique
Lieu : Besançon (France)
Messages : 1 114
Likes : 214
Rédaction SEO Sémantique
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.

0
J'aime ❤️

🔴 Hors ligne

#3 2016-01-18 16:09:06 · scripts, serveur, charger, secondes

Mention jeromeweb
🥉 Scout12 ansPilier VIClinicien VPremier secours VAccueillant IVPolyvalentIngénieur webAutomate
Lieu : pas loin de paris
Messages : 1 328
Likes : 5
PHP Automatisation

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

0
J'aime ❤️

🔴 Hors ligne

#4 2016-01-18 16:13:16 · script, php, vps

Mention Mitsu
🥉 ScoutAccueillant VIPilier VIClinicien VPremier secours V10 ansStratège IIIngénieur web IIPolyvalentExpert SEO
Messages : 2 012
Likes : 9
PHP JavaScript 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.

0
J'aime ❤️

🔴 Hors ligne

#5 2016-02-17 12:01:02 · php

Mention ciboulette
🥉 Scout10 ansPilier IVClinicien IIIPremier secours IIAccueillant
Messages : 391
Likes : 5

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

0
J'aime ❤️

🔴 Hors ligne

#6 2016-02-17 12:24:16 · script, php, serveur, méthode, requêtes

Mention DevForEver
🥉 Scout10 ansPilier IIIIngénieur web IIAppréciéClinicienPremier secours IIAccueillantExpert SEO
Lieu : Alsace
Messages : 178
Likes : 13
PHP Serveurs et DevOps 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 :D

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

0
J'aime ❤️

🔴 Hors ligne

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

Mention otassel
♟️ Recruit10 ansStratège IIIngénieur web IIPolyvalentPilierAccueillant
Messages : 13
Likes : 0
Netlinking Réseaux de sites (PBN) PHP Serveurs et DevOps

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)

0
J'aime ❤️

🔴 Hors ligne

#8 2016-05-25 09:08:09 · php, serveur

Mention Egres
🥉 Scout12 ansForce polyvalentePilier IIIAccueillant IIIIngénieur web IIPremier secours IIStratègeAutomate
Lieu : In the clouds
Messages : 173
Likes : 0
PHP Serveurs et DevOps Contenu assisté par IA 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

0
J'aime ❤️

🔴 Hors ligne

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

Mention KrustyHack
🥉 ScoutPilier V10 ansPremier secours IIIIngénieur web IIClinicien IIAccueillant
Messages : 660
Likes : 4
Serveurs et DevOps 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 :)


Infrastructure, VPS, serveurs, développement web et scripts, ... https://www.alsahack.com !

0
J'aime ❤️

🔴 Hors ligne

#10 2016-05-25 16:26:21 · php

Mention otassel
♟️ Recruit10 ansStratège IIIngénieur web IIPolyvalentPilierAccueillant
Messages : 13
Likes : 0
Netlinking Réseaux de sites (PBN) PHP Serveurs et DevOps

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.

0
J'aime ❤️

🔴 Hors ligne

Accueil › Développement › [PHP] La meilleure façon selon vous de faire du "multithread" en Curl?

Haut

Pied de page des forums