Профайлинг и логгинг выполнения в php

Сейчас для профайлинга использую что-то вроде logging.apache.org/log4php/apidocs/class-LoggerNDC.html.
Код выглядит примерно так:
public static function query($query, $throwError = true) {
        Log::push($query);
        if (!$r = self::getInstance()->query($query, PDO::FETCH_ASSOC)) {
            Log::pop($query);
            if ($throwError)
                throw new Exception($query . "\n" . print_r(self::getInstance()->errorInfo(), 1));
            else
                return false;
        }
        Log::pop($query);
        return $r;
    }


Т.е. мы оборачиваем некий контекст, замеряем время его выполнения, к примеру. Для этого приходится вызывать push() и pop() (2 строки кода) и в некоторых случаях проставлять pop() перед обработкой исключений (уже 3 и более строк кода).

В идеале хочется одним вызовом, например, через call_user_func проворачивать профайлинг, но должна быть также возможность его отключать для продакшна.

А как Вы реализуете профайлинг в php?
  • Вопрос задан
  • 3747 просмотров
Решения вопроса 1
AmdY
@AmdY
PHP и прочие вебштучки
xhprof или pinba, их можно спокойно использовать на подакшене.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
в Symfony2 с которым работаю есть встроенный профайлер (с красивыми тайм-логами). А так xDebug.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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