«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Руководство по глубокому анализу применения в черном огне

Руководство по глубокому анализу применения в черном огне

Опубликовано в 2025-04-14
Просматривать:904

Blackfire.io: глубокое погружение в профилирование производительности для более быстрого PHP -приложений

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

]

An In-depth Walkthrough of Supercharging Apps with Blackfire

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

An In-depth Walkthrough of Supercharging Apps with Blackfire

blackfire.io выделяется. Этот веб-профилировщик следующего поколения использует автоматические инструменты, не жертвуя производительностью приложения. Разработанный Sensiolabs (создатели Symfony Framework), Blackfire обеспечивает непрерывное тестирование производительности, не требуя модификаций кода.

]

Доступный через интерфейс расширения Chrome или командной строки, Blackfire легко интегрируется в различные среды, включая усадьбу. Этот урок демонстрирует использование Blackfire в строительстве более быстрого применения в пределах улучшенной установки усадьбы.

функции ключей:

    ]
  • Zero-Impact Instrumentation: ] В отличие от традиционных профилировщиков, Blackfire не замедляет ваше приложение.
  • ]
  • двойной интерфейс: профиль PHP сценариев через расширение Chrome или инструмент командной строки.
  • ]
  • широкая совместимость: бесшовная интеграция с многочисленными облачными поставщиками и виртуальными машинами, включая Homestead.
  • ]
  • модульная архитектура: включает зонд (PHP Extension), Agent (Daemon-Side Daemon), Companion (chrome Extension), Client (CLI) и интерфейс на основе веб-сайта.
  • ]
  • непрерывное тестирование: проактивное управление эффективностью без изменений кода.
  • ]
  • Подробная визуализация: графически представляет потоки выполнения и метрики производительности для эффективного анализа узких мест.
  • ]
]

Начиная:

после получения доступа к вашему блокноту Vagrant через vagrant ssh , создайте учетную запись Blackfire (если у вас его еще нет). Получите свои учетные данные (клиент и сервер) из настройки профиля Blackfire. Обновите свой homestead.yaml файл (расположенный в корневом каталоге вашего блок -ящика) с этими учетными данными:

]
blackfire:
    - id: "Server Id here"
      token: "Server token here"
      client-id: "Client Id here"
      client-token: "Client token here"
]

Blackfire Architecture:

]

Blackfire содержит пять основных компонентов:

]
    ]
  • едит: PHP расширение, придающий приложение и сбор данных о производительности (Linux и MacOS).
  • ]
  • Agent: агрегирование и передача информации о профиле на стороне сервера.
  • Companion: расширение Google Chrome для профилирования на основе браузера.
  • ]
  • client: эквивалент командной строки компаньона.
  • ]
  • веб-интерфейс: веб-панель для визуализации и сравнения данных профиля.
  • ]
]

(зонд, агент и клиент предварительно установлены в Университете Умстейда.)

Essential Terminology:

]
    ]
  • справочный профиль: базовое измерение производительности для сравнения.
  • ]
  • exclusive Time: время, проведенное по выполнению функции, исключая внешние вызовы.
  • ]
  • включительно время: общее время выполнения, включая внешние вызовы.
  • ]
  • Hot Paths: самые активные части вашего приложения во время профилирования.
  • ]
]

профилирование сценария PHP:

]

давайте продемонстрируем сценарий с участием взаимодействия базы данных. Для реалистичных результатов мы будем использовать Faker для генерации фиктивных данных, избегая включения накладных расходов Фейкера в наш основной анализ.

]

1. Генерация фиктивных данных (userproviderjson.php):

]
 $faker->name, 'email' => $faker->email, 'city' => $faker->city,];
}

file_put_contents('data/users.json', json_encode($data));

echo 'JSON file generated.';
php userproviderjson.php

. Это создает data/users.json . ]

2. Настройка базы данных:

создать базу данных mysql (

blackfire_tutorial

) и table ( sample_users ) с соответствующими столбцами.

3. Основной скрипт (Benchmark-brofore.php):

Php $ db = new PDO ('mysql: host = localhost; dbname = blackfire_tutorial; charset = utf8', 'homestead', 'secret'); Функция Savecustomers ($ db) { $ users = json_decode (file_get_contents ('data/users.json'), true); foreach ($ users as $ user) { $ stmt = $ db-> Prepare ("Вставьте в sample_users (имя, электронная почта, город) значения (?,?,?)"); $ stmt-> execute ([$ user ['name'], $ user ['email'], $ user ['city']]); } } Savecustomers ($ db); Echo 'пользователи успешно импортировались.
prepare("INSERT INTO sample_users (name, email, city) VALUES (?, ?, ?)");
        $stmt->execute([$user['name'], $user['email'], $user['city']]);
    }
}

SaveCustomers($db);
echo 'Users imported successfully.';
4. Первоначальное профилирование:

Использование расширения Blackfire Chrome, Profile bender-before.php , создание нового справочного профиля.

]

Веб -интерфейс Blackfire предоставляет подробный анализ: панель инструментов, обобщающих ключевые метрики, график вызова, визуализируя поток выполнения, списки функций с подробной информацией о времени и различных показателях (запросы SQL, использование памяти и т. Д.).

] An In-depth Walkthrough of Supercharging Apps with Blackfire

5. Оптимизация и перепрофилирование:

]

]

оптимизируйте скрипт, чтобы уменьшить вызовы базы данных (например, с помощью одного оператора вставки с несколькими значениями). Create bender-after.php с оптимизированным кодом. Повторно профиль, сравнивая с справочным профилем.

]

сравнение подчеркивает улучшения производительности.

] An In-depth Walkthrough of Supercharging Apps with Blackfire

интерфейс командной линии:

CLI Blackfire (

Blackfire ) допускает профилирование через терминал: ]

]

профилирование http requests:

blackfire curl http: // your-url
  • ] профилирование CLI Scripts: Blackfire Run PHP your-script.php
  • ] Создание справочного профиля: Blackfire-new-reference curl http: // your-url
  • сравнение с ссылкой: Blackfire --Reference = profile-ID curl http: // your-url
  • ] ] тесты производительности:
Blackfire (Premium пользователи) позволяет создавать тестирование производительности в файле

. Blackfire.yml , определяя утверждения по различным показателям. ]

Заключение:

Blackfire.io - мощный инструмент для оптимизации производительности приложения PHP. Его простота использования, подробный анализ и непрерывные возможности тестирования делают его неоценимым для разработчиков, стремящихся к высокопроизводительным приложениям. Предоставленные часто задаваемые вопросы дополнительно проясняют его возможности и преимущества. Не забудьте заменить значения заполнителей в примерах кода вашим фактическим идентификатором сервера, токенами и учетными данными базы данных.

]

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3