BlackFire.io : 더 빠른 PHP 응용 프로그램을위한 성능 프로파일 링에 대한 깊은 다이빙
특히 빠르게 확장되는 데이터베이스 및 수백만 개의 일일 요청을 처리 할 때 느리고 다루기 힘든 응용 프로그램을 즐기지 않습니다. 프로파일 링은 솔루션을 제공하여 프로그램의 자원 소비 (시간 및 기억)에 대한 통찰력을 제공합니다. 이를 통해 성능 병목 현상의 식별 및 해결이 가능합니다. 다양한 방법론을 사용하는 수많은 프로파일 링 도구가 존재합니다.
두 가지 주요 프로파일 링 접근법은 샘플링 및 계측입니다. 샘플링은 주기적으로 통화 스택 또는 메모리의 스냅 샷을 캡처하여 성능에 최소한의 영향을 미치지 만 잠재적으로 세부 사항이 누락됩니다. 반대로 계측은 코드에 직접 프로파일 링 지침을 삽입하여 (바이트 코드 수준에서 수동 또는 자동으로) 정확한 세부 사항을 제공하지만 성능 오버 헤드가 더 높습니다.
blackfire.io는 차별화됩니다. 이 차세대 웹 프로파일 러는 응용 프로그램 성능을 희생하지 않고 자동 계측을 사용합니다. Sensiolabs (Symfony Framework의 제작자)가 개발 한 Blackfire는 코드 수정없이 지속적인 성능 테스트를 가능하게합니다.
크롬 확장 또는 명령 줄 인터페이스를 통해 액세스 할 수있는 Blackfire는 홈스테드를 포함한 다양한 환경에 쉽게 통합됩니다. 이 튜토리얼은 홈스테드 개선 설정 내에서 더 빠른 응용 프로그램을 구축하는 데 BlackFire의 사용을 보여줍니다.
주요 기능 :
homestead.yaml 파일 (Vagrant Box의 루트 디렉토리에 위치)을 업데이트하십시오 :
BlackFire :
- ID : "여기서 서버 ID"
토큰 : "서버 토큰"
Client-ID : "Client ID Here"
Client-Token : "Client Token Here"
Blackfire Architecture :
blackfire:
- id: "Server Id here"
token: "Server token here"
client-id: "Client Id here"
client-token: "Client token here"
probe : PHP 확장 기기 애플리케이션 및 성능 데이터 수집 (Linux 및 MacOS).
에이전트 :
참조 프로필 :
비교를위한 기준 성능 측정.
독점 시간 :1. 더미 데이터 생성 (userProviderjson.php) :
php require_once ( 'vendor/autoload.php'); $ num = isset ($ _ get
)? $ _get: 1000; $ data = []; $ faker = faker \ factory :: create (); if (! file_exists ( 'data')) { mkdir ( 'data'); } for ($ i = 0; $ i ; } file_put_contents ( 'data/user.json', json_encode ($ data)); echo 'json 파일이 생성되었습니다.';
$faker->name, 'email' => $faker->email, 'city' => $faker->city,];
}
file_put_contents('data/users.json', json_encode($data));
echo 'JSON file generated.';
data/user.json . 를 만듭니다.
2. 데이터베이스 설정 :
3. 메인 스크립트 (Benchmark-before.php) :
php
$ db = new pdo ( 'mysql : host = localhost; dbname = blackfire_tutorial; charset = utf8', 'homestead', 'secret');
기능 Savecustomers ($ db) {
$ user = json_decode (file_get_contents ( 'data/user.json'), true);
foreach ($ user as $ user) {
$ stmt = $ db-> 준비 ( "sample_users (이름, 이메일, 도시) 값 (?,?,?)에 삽입;");
$ stmt-> execute ([$ user
, $ user , $ user
);
}
}
SAVECUSTOMERS ($ DB);
Echo '사용자는 성공적으로 수입했습니다.';
데이터베이스를 채우기 위해 URL을 통해이 스크립트에 액세스하십시오.
prepare("INSERT INTO sample_users (name, email, city) VALUES (?, ?, ?)");
$stmt->execute([$user['name'], $user['email'], $user['city']]);
}
}
SaveCustomers($db);
echo 'Users imported successfully.';
BlackFire Chrome 확장, 프로파일 벤치 마크 -pore.php
를 사용하여 새로운 참조 프로필을 작성합니다.
BlackFire 웹 인터페이스는 자세한 분석을 제공합니다. 주요 메트릭을 요약 한 도구 모음, 실행 흐름을 시각화하는 통화 그래프, 자세한 타이밍 정보가 포함 된 기능 목록 및 다양한 메트릭 (SQL 쿼리, 메모리 사용량 등). .
Benchmark-After.php
를 작성하십시오. 참조 프로파일과 비교하여 리프로 파일.
비교는 성능 향상을 강조합니다.
BlackFire
)는 터미널을 통해 프로파일 링을 허용합니다 :프로파일 링 http 요청 :
blackfire curl http : // your-url
blackfire-- re-reference curl http : // your-url
blackfire-reference = profile-id curl http : // your-url 성능 테스트 :
. blackfire.yml 파일 내에서 성능 테스트를 생성하고 다양한 메트릭에 대한 주장을 정의 할 수 있습니다.
결론:
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3