Promise.all Mémoire épuisante
Problème :
En attendant une vaste gamme de promesses avec Promise.all, la consommation de mémoire peut monter en flèche si les données résolues ne sont pas immédiatement utilisées. Ce scénario se produit lorsque les données promises ne sont pas cruciales pour le traitement.
Solution :
Pour minimiser la consommation de mémoire, utilisez les stratégies suivantes :
Limiter les requêtes simultanées :
Divisez le tableau de promesses en plus petits morceaux et les traiter séquentiellement avec un nombre limité de requêtes simultanées. Cette approche évite une allocation excessive de mémoire.
Remplacer les données résolues :
Si les données résolues sont redondantes, envisagez de les remplacer par un petit espace réservé, comme un numéro. Cela libère de la mémoire précédemment occupée par des données inutiles.
Fonction personnalisée pour une concurrence limitée :
Implémentez une fonction personnalisée telle que mapConcurrent pour contrôler le nombre de demandes concurrentes. Cette fonction parcourt le tableau tout en conservant une limite de concurrence spécifiée. Considérations :
Expérimenter avec Limite de concurrence : Déterminez la limite de concurrence optimale (X) qui équilibre l'utilisation de la mémoire et les performances.
const p = backgroundScheduler.getClanProfile(clanTags[i], true).then(data => { return 0; // Placeholder: Replace resolved data with a number }); promiseArray.push(p);
Demandes d'hôtes parallèles : Si les demandes sont réparties sur différents hôtes, augmenter X peut être bénéfique .
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!