Инструменты для визуального анализа использования памяти приложения PHP

Я нашел ошибку. Все было вызвано опечаткой для атрибута OU в AUTH_LDAP_REQUIRE_GROUP. Исправили это и изменили AUTH_LDAP_GROUP_TYPE на ActiveDirectoryGroupType, все начало работать.

23
задан Oleg Barshay 1 November 2008 в 19:11
поделиться

5 ответов

На http://www.xdebug.org/updates.php для Xdebug 2.0.4 они пишут в разделе, "удалил функции": "... Удаленная поддержка Памяти, представляющей, поскольку, это не работало правильно...". Следовательно привычка xdebug быть опцией

6
ответ дан 29 November 2019 в 02:39
поделиться

Графический инструмент для вывода xdebug KCacheGrind.

0
ответ дан 29 November 2019 в 02:39
поделиться

Попробуйте webgrind. Это дает Вам профилирование CacheGrinder в легком для чтения, основанный на браузере формат. Я нахожусь на Mac, и он сделал профилирование бриза.

0
ответ дан 29 November 2019 в 02:39
поделиться

phpDesigner 2008 может отладить и сравнить веб-сайтов с помощью xdebug и KCacheGrind. Это также имеет встроенный монитор.

0
ответ дан 29 November 2019 в 02:39
поделиться

Я недавно столкнулся с той же проблемой, не мог найти определенные инструменты, к сожалению.

, Но что-то, что помогло, должно было произвести трассировку xdebug в человекочитаемом формате с включенными дельтами мадам (установка INI, xdebug.show_mem_deltas или что-то, что я думаю?). Тогда выполненный вид (если Вы идете *, отклоняют) на выводе:

sort -bgrk 3 -o sorted.txt mytracefile.xt 

, Что виды на третьем седле, дельтах мадам. Можно также отсортировать на втором столбце, в этом случае можно найти строку, в которой приложение использует большую часть памяти всего.

, Конечно, это не может обнаружить, когда использование памяти объекта только накапливается в маленьких инкрементах, но заканчивает тем, что использовало большую память в целом. У меня есть довольно немой метод, который пытается сделать это использование комбинации объектного повторения и сериализации. Это, вероятно, не приравнивается точно к использованию памяти, но надо надеяться дает общее представление о том, где начать смотреть. Примите во внимание, что это израсходует саму память, и также не было экстенсивно протестировано, таким образом, покупатель будет остерегаться:

function analyzeMem($obj, $deep=false)
{
    if (!is_scalar($obj))
    {
        $usage = array('Total'=>strlen(serialize($obj)));
        while (list($prop, $propVal) = each($obj)) 
        {
            if ($deep && (is_object($propVal) || is_array($propVal)))
            {
                $usage['Children'][$prop] = analyzeMem($propVal);
            }
            else
            {
                $usage['Children'][$prop] = strlen(serialize($propVal));
            }
        }
        return $usage;
    }
    else
    {
        return strlen(serialize($obj));
    }
}

print_r(analyzeMem(get_defined_vars()));

кроме того, просто был предложен этот метод коллеги (приветствует Dennis;-) Это скрывает шаги, которые являются ниже 2 уровней добавления отступа, можно довольно легко видеть точки, где полное использование памяти подпрыгивает и может сузить вещи путем увеличения добавления отступа:

egrep '[0-9]+ (  ){1,2}-> ' mytracefile.xt
8
ответ дан 29 November 2019 в 02:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: