Ghid PHP: cum măsori consumul de memorie al unui script prin memory_get_usage()

În dezvoltarea aplicațiilor web și a scripturilor PHP complexe, monitorizarea resurselor consumate de server reprezintă un aspect esențial pentru performanță și scalabilitate. Un design plăcut și o interfață intuitivă sunt importante pentru utilizatori, însă la fel de critic este ca infrastructura din spate să poată susține eficient un volum mare de vizitatori simultani fără a epuiza memoria alocată procesului (limita memory_limit).

Dacă dorești să testezi câtă memorie RAM utilizează un anumit bloc de cod sau o funcție din proiectul tău, limbajul PHP pune la dispoziție instrumente native dedicate: funcțiile memory_get_usage() și memory_get_peak_usage().

Cum funcționează funcția memory_get_usage()?

Funcția nativă memory_get_usage() returnează cantitatea de memorie (exprimată în octeți / bytes) alocată în mod curent scriptului PHP. În mod implicit, aceasta raportează memoria utilizată de managerul intern de alocare al PHP. Dacă îi transmiți argumentul boolean true (adică memory_get_usage(true)), funcția va returna cantitatea reală de memorie alocată direct de sistemul de operare.

Pentru a măsura impactul unui script sau al unei interogări în baza de date, poți citi consumul înainte și după execuția codului respectiv:

<?php
// 1. Măsurarea consumului de memorie la începutul scriptului
$memorie_initiala = memory_get_usage();
echo "Memorie inițială: " . $memorie_initiala . " bytes\n";

/* ========================================================
   Aici introduci codul tău, procesarea de date sau buclele
   ======================================================== */
$date_test = [];
for ($i = 0; $i < 100000; $i++) {
    $date_test[] = md5((string)$i);
}

// 2. Măsurarea consumului de memorie după execuție
$memorie_finala = memory_get_usage();
echo "Memorie finală: " . $memorie_finala . " bytes\n";

// 3. Diferența de memorie consumată de blocul de cod
$memorie_utilizata = $memorie_finala - $memorie_initiala;
echo "Memorie utilizată de operațiune: " . $memorie_utilizata . " bytes\n";

// 4. Vârful absolut de memorie alocat pe durata rulării
$memorie_maxima = memory_get_peak_usage();
echo "Vârf de memorie (peak usage): " . $memorie_maxima . " bytes\n";
?>

Diferența dintre memory_get_usage() și memory_get_peak_usage()

În timp ce memory_get_usage() reflectă o valoare instantanee la momentul apelării, funcția memory_get_peak_usage() monitorizează cel mai înalt nivel de memorie atins pe întreaga durată de viață a scriptului până în acel punct. Această valoare este deosebit de utilă pentru a identifica dacă scriptul a trecut aproape de depășirea directivei memory_limit definite în fișierul de configurare php.ini.

Pentru a afișa valorile într-un format ușor de citit (kiloocteți sau megaocteți), poți împărți rezultatul la 1024 sau 1048576, obținând astfel o imagine fidelă a amprentei de memorie a aplicației tale.

Lasă un comentariu