Grâce aux coroutines et à Promise, la programmation asynchrone PHP peut résoudre le problème d'efficacité des calculs d'intersection et d'union de tableaux. Le modèle de concurrence léger coroutine permet de suspendre et de reprendre l'exécution des fonctions, tandis que le mécanisme Promise est utilisé pour gérer les tâches asynchrones. Cet article fournit deux exemples de fonctions : array_intersect_async utilise Promiseany pour calculer l'intersection de manière asynchrone, en identifiant la première valeur également présente dans le deuxième tableau. array_union_async utilise Promiseall pour calculer l'union de manière asynchrone, en identifiant les valeurs qui se trouvent dans le premier tableau mais pas dans le second.
Explorez les conseils de programmation asynchrone pour les calculs d'intersection et d'union de tableaux PHP
La programmation asynchrone peut considérablement améliorer les performances des applications PHP, en particulier lorsqu'il s'agit de fonctionner sur de grands ensembles de données. Cet article explorera comment utiliser les coroutines PHP et les mécanismes Promise pour calculer de manière asynchrone l'intersection et l'union de tableaux.
Coroutines
Les coroutines sont un modèle d'exécution simultané léger qui permet aux fonctions de suspendre et de reprendre l'exécution plus tard. PHP fournit une bibliothèque de coroutines appelée amphp, que nous pouvons utiliser pour effectuer des tâches de manière asynchrone sans bloquer le processus principal.
Utiliser des coroutines pour calculer de manière asynchrone les intersections de tableaux
use Amp\Parallel\Worker; use Amp\Promise; function array_intersect_async(array $arr1, array $arr2): Promise { $promises = []; foreach ($arr1 as $value) { $promises[] = new Worker(function () use ($value, $arr2) { return in_array($value, $arr2); }); } return Promise\any($promises); } $arr1 = [1, 2, 3, 4, 5]; $arr2 = [3, 4, 5, 6, 7]; array_intersect_async($arr1, $arr2)->onResolve(function ($result) { var_dump($result); });
Utiliser des coroutines pour calculer de manière asynchrone les unions de tableaux
function array_union_async(array $arr1, array $arr2): Promise { $promises = []; foreach ($arr1 as $value) { $promises[] = new Worker(function () use ($value, $arr2) { return !in_array($value, $arr2); }); } return Promise\all($promises); } $arr1 = [1, 2, 3, 4, 5]; $arr2 = [3, 4, 5, 6, 7]; array_union_async($arr1, $arr2)->onResolve(function ($results) { $result = array_diff($arr1, $results); var_dump($result); });
Cas pratiques
Dans des applications réelles, les calculs de tableaux asynchrones peuvent être utilisés lors du traitement de grands ensembles de données, par exemple :
La programmation asynchrone peut réduire considérablement le temps nécessaire pour gérer ces tâches, améliorant ainsi la réactivité et le débit des applications.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!