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()