Определение расходов памяти на выполнение PHP – скрипта

Многие сталкиваются с довольно сложной проблемой – определить какой скрипт на вашем сайте (хостинге) потребляет слишком много выделенной памяти.

В этой статье я приведу пример того как можно без особых сложностей определить какой скрипт съедает много памяти.

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

mem_log_past.php
// Получаем сколько памяти выделено когда скрипт отработал
$AllocMem = round(mmemory_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’].”
“;
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/ будут создаваться файлы с описанием где и на сколько превышен лимит памяти.
Кроме этого в исходном коде страниц вашего сайта, пролистав код в самый низ, вы увидите сколько памяти потрачено на генерацию текущей страницы.

6 Comments

  1. У меня все сайты нормально потребляют, до 3 мб, а вот те что на движке WordPress (включая этот блог) жрут память как потерпевшие (от 6 до 13 мб)

    Reply
  2. У тебя блог еще и очень долго грузится, даже при моем быстром питерском соединении. Подозреваю, что кроме всего прочего в этом виновата графика на главной (кстати, после редизайна, кажется, получше стало). Мой stand along тоже тормозит неимоверно, но это, по большому счету, издержки использования зарубежного хостинга.

    Reply
  3. Не знаю даже что сказать. Единственное наверное правильное рещение будет сменить систему управления сайтом.

    Reply
  4. 3 мегабайта памяти – это не так уж и много :) у меня сайт средний – 2.7 мегабайт использует (на kohana). а вот вордпрес – вообще жесть – даже представить страшно (несколько десятков!).

    Reply
  5. у вас в форме заполнения коментов “Имя” отображается неверно, с кодировкой проблема, буква “и” 2 кракозабла )). У меня FF 13.0.1 ububntu 10.04, может только у меня так.

    Reply

Leave a Comment.