Определение потребления памяти PHP скриптом

Есть несколько методов решения поставленной задачи — запротоколировать объем потребления памяти при исполнении PHP скрипта.
Первый мы рассмотрим в этой статье.

Данный способ позволяет фиксировать в лог файл потребление памяти PHP, не внося изменения в ваш основной скрипт.
Будем определять количество выделенной памяти до и после выполнения скрипта. Для этой цели используем функцию memory_get_peak_usage(true)

Принцип таков:
Создадим файл:
mem_log_past.php

// Получаем сколько памяти выделено когда скрипт отработал
$AllocMem = round( memory_get_peak_usage(true) / 1024 );
 
// Если больше 3000 кб, то логируем.
if ($AllocMem>3000)
{
   $dtm=date(’Y-m-d’);
 
   // Путь к файлу лога
   $fn=/home/user/logs/mem-.$dtm..log;
 
   $txt="Перерасход памяти: ".($AllocMem)." Kb Скрипт: ".$_SERVER['SCRIPT_FILENAME']." Ссылка: ".$_SERVER['REQUEST_URI']."\n";
   file_put_contents($fn,$txt,FILE_APPEND);
}

Этот файл должен запускаться после выполнения скрипта, потребление памяти которым вы замеряете.
Сделать это не сложно с помощью соответстующей переменной в php.ini:

auto_append_file =/home/user/logs/mem_log_past.php

Если у вас нет доступа к php.ini, то вы можете прописать её в файле .htaccess вашего сайта:

php_value auto_append_file "/home/user/logs/mem_log_past.php"

Теперь в папке /home/user/logs/ будут создаваться логи, описывающие превышение лимита памяти.
Кроме этого в исходном коде страниц вашего сайта, пролистав код в самый низ, вы увидите сколько памяти потрачено на генерацию текущей страницы.

Similar Posts:

Запись опубликована в рубрике Трюки на PHP с метками , . Добавьте в закладки постоянную ссылку.

Добавить комментарий