memory_get_usage / memory_get_peak_usage în PHP

Sistem și configurare PHP 4.3.2+ (memory_get_peak_usage: PHP 5.2+)

Returnează câtă memorie folosește scriptul acum (memory_get_usage) sau maximul atins (memory_get_peak_usage).

Sintaxă
memory_get_usage(bool $real_usage = false): int

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ă unset la 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.