0Pricing
PHP Academy · Leçon

Gestion de la mémoire et conseils de performance

Libérer rapidement la mémoire, éviter les grandes copies de tableaux et utiliser des générateurs pour les grands ensembles de données.

Gestion de la mémoire et conseils de performance est une leçon PHP Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage PHP Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours PHP Academy comprend 4 leçons au total.

Gestion de la mémoire de PHP

PHP utilise le comptage de références avec un collecteur de cycles pour récupérer la mémoire. Chaque requête commence avec un tas neuf ; les processus de longue durée (processus de traitement, Horizon) peuvent accumuler des fuites mémoire.

memory_limit

Définissez une limite de mémoire appropriée dans php.ini. La dépasser provoque une erreur fatale.

# php.ini:
memory_limit = 256M

// Check at runtime:
echo memory_get_usage(true)   / 1024 / 1024 . " MB";
echo memory_get_peak_usage(true) / 1024 / 1024 . " MB peak";

Désallocation des grandes variables

Libérez explicitement la mémoire lorsque de grands tableaux ou objets ne sont plus nécessaires au sein d’une fonction de longue durée.

<?php
$data = loadLargeDataset();
processData($data);
unset($data); // free immediately, do not wait for end of scope
gc_collect_cycles(); // force garbage collection if circular references

Générateurs pour les grands ensembles de données

Utilisez des générateurs pour traiter les fichiers volumineux ou les résultats de requêtes ligne par ligne sans tout charger en mémoire.

<?php
function readCsvLines(string $file): Generator {
    $fh = fopen($file, "r");
    while (($line = fgetcsv($fh)) !== false) {
        yield $line;
    }
    fclose($fh);
}

foreach (readCsvLines("large.csv") as $row) {
    importRow($row);
}

Éviter la copie des grands tableaux

PHP utilise la copie à l’écriture pour les tableaux. L’affectation d’un tableau à une variable ne le copie pas tant que l’un des deux n’est pas modifié. Passez les grands tableaux par référence lorsqu’une mutation est nécessaire.

<?php
function processArray(array &$data): void {
    // & avoids a copy when the parameter is modified
}

Concaténation de chaînes dans les boucles

Construire une chaîne par concaténation dans une boucle est inefficace pour les chaînes très volumineuses. Utilisez un tableau et implode().

<?php
// Slow for large N:
$str = "";
foreach ($items as $item) $str .= $item->format()."\n";

// Faster:
$parts = [];
foreach ($items as $item) $parts[] = $item->format();
$str = implode("\n", $parts);

Mise en cache de la création d’objets

Instancier des objets, en particulier lorsque le constructeur contient une logique, dans des boucles serrées coûte cher. Mettez les instances en cache ou utilisez des objets poids plume lorsque c’est possible.

Éviter les appels de fonctions répétés

Sortez des boucles les appels de fonctions constants lorsque le résultat ne change pas à chaque itération.

<?php
// Slow:
for ($i = 0; $i < count($items); $i++) { ... }

// Fast (count() called once):
$n = count($items);
for ($i = 0; $i < $n; $i++) { ... }

Réglage des processus PHP-FPM

Configurez le nombre de processus PHP-FPM en fonction de la mémoire disponible et de la concurrence attendue. Règle approximative : nombre de processus = RAM / (utilisation moyenne de mémoire par processus).

OPcache et préchargement

Activez OPcache, présenté dans la leçon précédente, et préchargez les classes du framework utilisées fréquemment. Cela élimine la surcharge d’analyse et de compilation à chaque requête.

Commencer par le profilage

Effectuez toujours un profilage avant d’optimiser. Les micro-optimisations appliquées à du code qui n’est pas un goulot d’étranglement font perdre du temps et réduisent la lisibilité. Utilisez Xdebug ou Blackfire pour trouver le véritable chemin d’exécution critique.

Résumé

Utilisez des générateurs pour les grands ensembles de données. Libérez les variables lorsque vous n’en avez plus besoin. Évitez de copier de grands tableaux. Sortez les appels constants des boucles. Effectuez un profilage avec Xdebug pour trouver les véritables goulots d’étranglement avant d’optimiser.

Vérification rapide

Quel est le principal avantage des générateurs PHP pour les grands ensembles de données ?

Questions Fréquemment Posées

La leçon « Gestion de la mémoire et conseils de performance » est-elle gratuite ?

Oui — le texte complet de « Gestion de la mémoire et conseils de performance » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours PHP Academy, passe à CoddyKit PRO. Le cours PHP Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Gestion de la mémoire et conseils de performance » ?

Libérer rapidement la mémoire, éviter les grandes copies de tableaux et utiliser des générateurs pour les grands ensembles de données. Tu pratiques PHP Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer PHP Academy ?

Aucune expérience préalable n'est requise. PHP Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Gestion de la mémoire et conseils de performance » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon PHP Academy ?

Oui. Chaque leçon PHP Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Profiler PHP avec Xdebug
  2. OPcache : mise en cache du bytecode
  3. Optimiser les requêtes de base de données
  4. Gestion de la mémoire et conseils de performance
← Retour à PHP Academy