Blackfire.io: глубокое погружение в профилирование производительности для более быстрого PHP -приложений
никто не любит медленные, громоздкие приложения, особенно при работе с быстро расширяющимися базами данных и миллионами ежедневных запросов. Профилирование предлагает решение, предоставляя информацию о потреблении ресурсов программы (время и память). Это допускает идентификацию и разрешение узких мест производительности. Существуют многочисленные инструменты профилирования, каждый из которых использует разные методологии.
]
два первичных подхода профилирования - это выборка и инструментация. Отбор проб периодически фиксирует снимки стека или памяти вызовов, минимально влияя на производительность, но потенциально отсутствует детали. Инструментация, наоборот, встает инструкции по профилированию непосредственно в код (либо вручную, либо автоматически на уровне байт -кода), предлагая точные детали, но с большими накладными расходом.
blackfire.io выделяется. Этот веб-профилировщик следующего поколения использует автоматические инструменты, не жертвуя производительностью приложения. Разработанный Sensiolabs (создатели Symfony Framework), Blackfire обеспечивает непрерывное тестирование производительности, не требуя модификаций кода.
]Доступный через интерфейс расширения Chrome или командной строки, Blackfire легко интегрируется в различные среды, включая усадьбу. Этот урок демонстрирует использование Blackfire в строительстве более быстрого применения в пределах улучшенной установки усадьбы.
функции ключей:
Начиная:
после получения доступа к вашему блокноту 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 содержит пять основных компонентов:
](зонд, агент и клиент предварительно установлены в Университете Умстейда.)
Essential Terminology:
]профилирование сценария 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
. ]
создать базу данных mysql (
blackfire_tutorial) и table ( sample_users
) с соответствующими столбцами.
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 , создание нового справочного профиля.
]
]
]
]оптимизируйте скрипт, чтобы уменьшить вызовы базы данных (например, с помощью одного оператора вставки с несколькими значениями). Create bender-after.php с оптимизированным кодом. Повторно профиль, сравнивая с справочным профилем.
]
]
CLI Blackfire (
Blackfire ) допускает профилирование через терминал: ]
] профилирование http requests:
Blackfire Run PHP your-script.php
Blackfire-new-reference curl http: // your-url
Blackfire --Reference = profile-ID curl http: // your-url тесты производительности:
. Blackfire.yml , определяя утверждения по различным показателям. ]
Заключение:
]
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3