Comment inclure ma propre fonction "getDetails($href)" dans l'usage dans le package amphp-Parallel ???

Eléphant du PHP | 137 Messages

15 juin 2022, 02:13

Bonjour.

J'essaie d'utiliser cette librairie amPHP-Parallel (https://github.com/amphp/parallel) à ma fonction getDetails($href). Sachant que le README a utilisé comme fonction file_get_contents dans les `promises` comme suit:

Code : Tout sélectionner

$urls = [ 'https://secure.php.net', 'https://amphp.org', 'https://github.com', ]; $promises = []; foreach ($urls as $url) { $promises[$url] = Worker\enqueueCallable('file_get_contents', $url); } $responses = Promise\wait(Promise\all($promises)); foreach ($responses as $url => $response) { \printf("Read %d bytes from %s\n", \strlen($response), $url); }
Alors que ma fonction getDetails($href) dont je cherche à traiter parallèlement, comme vous pouvez le constater, prend en paramètre ou argument entre parenthèse, une valeur (ici représentée par par la variable $href), comment donc, puis-je l'inclure dans le Worker\enqueueCallable() pour remplacer file_get_contents par défaut ???

Merci de m'éclairer s'il vous plait.

Avatar du membre
Eléphanteau du PHP | 41 Messages

15 juin 2022, 11:19

ça peut le faire avec se projet; je le découvre avec toi.
mais comme toutes premier investigation tu dois prendre le temps de lire la doc

"This package provides true parallel processing for PHP using multiple processes or native threads, without blocking and no extensions required."
c'est déjà bon signe donc coup classique PHP8 à nativement une gestion threader

donc pour démarrer là donc c'est simple :
https://amphp.org/parallel/

https://amphp.org/amp/event-loop/
https://amphp.org/amp/promises/
https://amphp.org/amp/iterators/
https://amphp.org/amp/coroutines/
https://amphp.org/amp/event-loop/

lecture test lecture test...

Eléphant du PHP | 137 Messages

15 juin 2022, 15:00

Merci pour votre réponse. Alors, j'ai voulu traiter ma fonction getDetails comme suit:

Code : Tout sélectionner

$promises[$href] = Worker\enqueueCallable('getDetails', $href);
Pensez-vous que ce serait correcte ???

Avatar du membre
Eléphanteau du PHP | 41 Messages

16 juin 2022, 13:34

aucune idée si tu vas pas voir comment fonctionne la class Worker et la méthode, et que tu test pas. personne pourra savoir pour toi c'est pour cela que c'est impératif que c'est toi et toi seul qui passe du temps à comprendre et pas les autres. ici c'est si vraiment tu tomber sur une personne ou c'est son domaine ou il a déjà travailler avec mais sinon ça tout le monde travail sur d'autre projet donc voila moi je pourrais pas t'aider plus pour le moment.

si j'étais toi, retiens bien les mots que j'utilise :


1 - je cadre le périmètre: je veux faire quoi.

2 - je mange la doc et y a 5 pages une doc technique en électronique c'est entre 50 et 1000 pages et dans beaucoup de domaine en Dev c'est ~20 à 30 en moyenne. donc tu es chanceux

3 - tu test le plus possible pour comprendre.

4 - un jours tu pourras aider une autre personne. et mon petit doigt me dit que tu diras la même chose que moi ici même parce qu'on m'a dit la même chose y a 10ans mais pas ici


personne n'a la solution mais on a avec le temps, des comportements qui permettent de trouver des solutions. et ça commence toujours par lire la doc et tester, lire la doc et tester, lire la doc et tester, lire la doc et tester, lire la doc et tester, lire la doc et tester...

et tu tombera certainement un jour sur un mec qui va te dire maladroitement " Read the fucking manuel and stop asking question. " alors c'est pas la méthode la plus diplomatique :) mais il y a du bon.

et si tu trouve pas avec le manuel alors ça donnera envie à d'autre de t'aider peut être