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

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

Итак, для начала опишу принцип:
Мы будем определять количество выделенной памяти до выполнения скрипта и после. Для этого будем использовать функцию 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/ будут создаваться файлы с описанием где и на сколько превышен лимит памяти.
Кроме этого в исходном коде страниц вашего сайта, пролистав код в самый низ, вы увидите сколько памяти потрачено на генерацию текущей страницы.

Похожие статьи:




1 звезда2 звезды3 звезды4 звезды5 звезд (1 голосов, средний: 1 из 5)
Загрузка ... Загрузка ...