Eclipse PHP Profiler - Как вы получаете параметры? - PullRequest
1 голос
/ 17 августа 2011

Используя PHP Profiler Eclipse, я обнаружил узкое место в своем коде в методе, который вызывается много раз.Проблема в том, что я не могу сказать, какие параметры были переданы методу, чтобы определить, как воспроизвести симптом.

Я попытался окружить код, о котором сообщает профилировщик, и занял целую секунду, чтобы выполнить следующее:

$startTime = microtime(true);
$safe_text = wp_check_invalid_utf8( $text );
$endTime = microtime(true);
$time = $endTime - $startTime;
if ($time > .05) {
    error_log('Time: ' . $time . ' text [' . $text . ']');
}

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

У меня такая же проблема в 3 разных областях моего кода, и знание того, что передавалось методам во время их медленного выполнения, может бытьпомощи в решении проблемы.Есть ли способ определить, что передается периодически медленному методу, когда он работает медленно?

1 Ответ

0 голосов
/ 17 августа 2011

Это можно настроить с помощью xdebug, который Eclipse использует для профилирования, однако по умолчанию он отключен, поскольку запись этих данных в проекте, который выполняет много вызовов или пропускает большие структуры данных, быстро переполнит вашу доступную память.

Я рекомендую вам делать ручную регистрацию, как вы делаете в настоящее время, хотя я бы начал с измерения общего времени всех вызовов wp_check_invalid_utf8, чтобы убедиться, что у вас действительно есть проблемы только в этой части, и это не так.Это просто проблема, вызванная самим профилировщиком Eclipse.После того как вы установили, что общее время больше, чем вы хотели, начните регистрировать отдельные вызовы и их параметры.

...