Ce face memory_get_usage / memory_get_peak_usage
memory_get_usage spune câți octeți de memorie ocupă scriptul în acest moment. memory_get_peak_usage spune maximul atins de la pornire. Le folosești când un script se apropie de limita memory_limit și vrei să afli ce consumă memoria.
Cu parametrul true primești memoria rezervată de la sistem, care crește în blocuri de câte 2 MB. Fără el, memoria folosită efectiv de variabile.
Parametri
| Parametru | Descriere |
|---|---|
$real_usage |
Opțional. true pentru memoria rezervată de la sistem, false pentru cea folosită efectiv. |
Ce returnează
Numărul de octeți.
Exemple
Exemplul 1: Memoria folosită și maximul
<?php
echo memory_get_usage() . " octeți acum\n";
echo memory_get_usage(true) . " octeți rezervați\n";
echo memory_get_peak_usage() . " octeți maxim";
Rezultat posibil (diferă de la un sistem la altul)
472336 octeți acum
2097152 octeți rezervați
508048 octeți maxim
Exemplul 2: Cât ocupă un tablou mare
<?php
$inainte = memory_get_usage();
$numere = range(1, 100000);
$dupa = memory_get_usage();
echo "Tabloul ocupă " . round(($dupa - $inainte) / 1024 / 1024, 1) . " MB\n";
unset($numere);
echo "Maxim atins: " . round(memory_get_peak_usage() / 1024 / 1024, 1) . " MB";
Rezultat posibil (diferă de la un sistem la altul)
Tabloul ocupă 2 MB
Maxim atins: 2.5 MB
Greșeli frecvente
- Te aștepți ca memoria să scadă imediat după
unsetla valoarea de dinainte. PHP poate păstra o parte din memorie rezervată. Urmărește diferențele mari, nu octeții exacți. - Măsori o singură dată, la final. Problema se vede mai bine cu
memory_get_peak_usage, care păstrează maximul.
Comenzi înrudite
ini_set / ini_get: Schimbă o setare din php.ini doar pentru scriptul curent (ini_set) sau îi citește valoarea (ini_get).unset: Șterge o variabilă sau un element dintr-un tablou.php_uname: Returnează informații despre sistemul de operare pe care rulează PHP.