Blackfire lets you profile HTTP requests like web pages, web service calls, or API calls.
To get started, check that you have Blackfire installed correctly on the server hosting the website you want to profile.
Profiling an HTTP request means instrumenting the project’s code. Blackfire is apart from many other profilers because of two main differences:
This cookbook describes how to profile from the command line interface. You can also profile web applications from a browser.
Profiling an HTTP request can be done on the command line thanks to the
The easiest way to profile an HTTP request is to use the
blackfire utility. It accepts the same arguments and options as the regular
blackfire curl http://example.com/
You can get a list of options available for the
blackfire help curl
To get more accurate results, take several samples of the request via the
--samples option (we recommend you to use this option only for “safe” HTTP
blackfire --samples 10 curl http://example.com/
At the end of the request,
blackfire outputs the URL where the profile can
be found (hide it by passing the
You can integrate Blackfire results into your tools by using the
option to get a JSON representation of a profile:
blackfire --json curl http://example.com/
The JSON output is displayed on
STDOUT, while the regular output (e.g.
progress, profile summary…) is displayed on
The resources consumed are available under the
keys are the cost dimensions:
Profiling non-GET requests or requests which need some specific HTTP headers is
no different as
blackfire curl supports all cURL options:
blackfire curl -XPOST http://example.com/
Blackfire automatically instruments your code, but sometimes, you might want to focus the profiling on only part of the code. That’s possible when opting for manual instrumentation via the PHP SDK.
After instrumenting your code, use the
blackfire utility as above to
profile your application. When not using Blackfire, all calls are converted to