craft-profile
craft-profile copied to clipboard
A command-line utility for capturing Craft CMS Profiling output and reporting averages.
craft-profile [WIP]
Have you found yourself working on a Craft site and constantly opening up devtools to look at Craft's Template Profiling output (Execution Time & Total Queries)? Have you ever wanted to know what the average execution time is over a number of requests? Do you really want to do all that yourself, manually?
Enter craft-profile: a command-line tool for gathering Craft CMS Profiling data and reporting averages.
This tool is a work in progress. Expect instability and bugs. I plan to release this on NPM when I have time to add tests. If you'd like to try this tool out, great! I would appreciate any and all feedback - don't hesitate to open an issue.
See TODO.md for notes about progress and future features.

Requirements
Important: In order for this script to work, your Craft site must have devMode on (so that Craft's Template Profiling data is injected into pages).
- Node >=5.4
- NPM >= 3.3.12
Installation / Setup
Clone the repository and cd into the root directory.
Install dependencies from npm:
$ npm install
Ensure the files in /bin are executable:
$ chmod a+x bin/craft-profile
$ chmod a+x bin/worker
OPTIONAL: Add the bin folder location to your $PATH, to allow execution of craft-profile without typing out the full location to the binary.
Reference the config.json.example for creating your own project's craft-profile config file. Alternatively, you may just use the command-line options.
Usage
The basic premise is you provide craft-profile with a baseUrl and a list of paths to visit (URLs are created by appending each path to the baseUrl) along with a few other parameters. craft-profile handles issuing all of the requests, parsing out the profile data, and then aggregating, averaging, and reporting the results.
By default craft-profile will print a nicely formatted table to stdout.
$ ./bin/craft-profile -c config.json
$ ./bin/craft-profile -b http://mysite.dev:3000 \
-p /,/foo,/bar,/baz/qux \
-i 20
$ ./bin/craft-profile --base-url=http://localhost:3000 \
--paths=/,/foo,/bar,/baz/qux \
--iterations=20
Options/Flags:
| short | long | description |
|---|---|---|
| -b | --base-url | Base URL that paths will be appended to (aliases: baseUrl, base-url, base_url) |
| -p | --paths | Comma-separated list of paths, e.g. "/,/foo,/bar/baz" |
| -i | --iterations | How many times to load each page |
| -w | --workers | How much concurrency (how many workers) |
| -t | --timeout | How long to wait before bailing on a request |
| -d | --delay | How long to wait before initiating subsequent requests |
| -o | --output | File to write output to, if not specified the program output will be displayed in the terminal |
| -c | --config | Relative path to JSON config file (will override the above flags) |
| --verbose | Output additional information while running |
This program also accepts a JSON config file on stdin and will output to the specified file if the program's output is redirected.