Strona główna >PHP >Leksykon PHP – funkcje >memory_get_peak_usage

memory_get_peak_usage

memory_get_peak_usage($real)

Zwraca największą liczbę bajtów pamięci, jaką skrypt zajął od swojego startu. W odróżnieniu od memory_get_usage() wartość nie spada po zwolnieniu pamięci.

Parametry

  • $real – opcjonalny, z true funkcja zwraca szczyt pamięci pobranej od systemu.

Przykłady

$data = range(1, 100000);
$peak = memory_get_peak_usage();
unset($data);
// bieżące zużycie spadło, szczyt pozostał
var_dump(memory_get_usage() < $peak); // bool(true)
var_dump(memory_get_peak_usage() >= $peak); // bool(true)
// zapis stron zużywających dużo pamięci na końcu skryptu
function log_peak() {
    $mb = memory_get_peak_usage(true) / 1048576;
    if ($mb > 64) {
        error_log("Pamięć " . round($mb) . " MB: " . $_SERVER["REQUEST_URI"]);
    }
}
// register_shutdown_function("log_peak");

Na co uważać

  • Szczyt dotyczy całego skryptu. Do pomiaru tylko części kodu służy od PHP 8.2 memory_reset_peak_usage(), w starszych wersjach możesz jedynie porównać szczyt przed i po.
  • Wartość z true jest zaokrąglona do bloków, które PHP pobiera od systemu (zwykle po 2 MB).
  • Gdy szczyt zbliża się do memory_limit, poszukaj miejsc, które ładują duże dane naraz (całą tabelę, cały plik), i przetwarzaj je w częściach.

Powiązane funkcje:
memory_get_usage()
register_shutdown_function()
ini_get()