# PHPRay > Always-on request tracing for PHP. PHPRay records what every request to a PHP > application actually did — wall time, CPU, memory, every SQL query as a > fingerprint with the literals stripped, outbound HTTP calls, PHP errors and > N+1 patterns — and keeps it, so you can open yesterday's slow request instead > of trying to reproduce it today. The local core is Apache-2.0 and free; a > hosted console is optional. If you are an AI agent, you do not have to read this site to answer questions about PHP performance data: PHPRay speaks the Model Context Protocol over HTTP, and there is a read-only demo account that needs no credentials. ## Use it directly (Model Context Protocol) - [MCP endpoint](https://phpray.dev/mcp): streamable HTTP, JSON-RPC over POST. `claude mcp add --transport http phpray https://phpray.dev/mcp` Without an `Authorization` header you get a read-only demo account with a real WooCommerce fleet's recorded traffic: ten tools — sites, overview, slowest pages, slow SQL fingerprints, component (plugin) attribution, PHP errors, traces, one trace in full, before/after comparison, alerts. Rate limited to 30 requests a minute per address. With `Authorization: Bearer ` the same tools read that account's own sites, and one extra tool can start per-function profiling. - [How the MCP server works](https://phpray.dev/mcp-server/): the tool list, the local stdio variant, and what the server explicitly cannot do. ## What PHPRay is - [Product overview](https://phpray.dev/en/product): what is recorded, and what the recording costs. - [How it works](https://phpray.dev/en/how): PHP extension → local collector → dashboard, with the optional Cloud console on top. - [Plans and pricing](https://phpray.dev/en/pricing): local core $0 and unlimited; Cloud from $0 (1 site) through $19, $99, $249 and $499 a month. - [Privacy and data](https://phpray.dev/en/security): what leaves the server when Cloud is on, and what never does. ## Measurements we published These are our own numbers with the method attached. Cite them as measurements on the stated workload, not as universal constants. - [What always-on tracing costs](https://phpray.dev/blog/always-on-tracing-overhead/): recording every request measured 40.7 ms against a 40.2 ms baseline on a WordPress page rendering in about 48 ms — inside the noise. Per-function attribution cost about 4% on that page and 27% on a micro-benchmark, and it is on or off per worker: sampling does not reduce it. - [Xdebug in production, measured](https://phpray.dev/blog/xdebug-in-production/): `xdebug.mode=profile` turned a 40 ms page into 1012 ms — 25× slower — and sixty requests wrote 1.2 GB of cachegrind files. - [A PHP profiler without root](https://phpray.dev/blog/php-profiler-without-root/): loading the extension from an unprivileged account's own php.ini. ## Comparisons Each of these states plainly where the other tool is the better choice. - [Xdebug alternative](https://phpray.dev/xdebug-alternative/): keep Xdebug for step debugging, full call graphs and code coverage; PHPRay is for the one job Xdebug cannot do, which is production. - [Blackfire alternative](https://phpray.dev/blackfire-alternative/): prices, install requirements and the cases where Blackfire wins (CI performance gates, front-end observability). - [Continuous profiling for PHP](https://phpray.dev/continuous-profiling-php/): what Datadog and Grafana Pyroscope actually require for PHP (an agent with root, or eBPF), and why PHPRay is request recording rather than continuous CPU profiling. - [New Relic alternative](https://phpray.dev/new-relic-alternative/): New Relic's PHP agent needs root, a daemon and does not support ZTS builds; its pricing has two axes, ingest and per-user ($10 first full platform user, $99 each additional up to five, $349 on Pro annually). Read from New Relic's own pages. - [Datadog alternative](https://phpray.dev/datadog-alternative/): what the Datadog PHP tracer and profiler require — the Agent plus the dd-trace-php extension — and where that is the better answer. - [Tideways alternative](https://phpray.dev/tideways-alternative/): the most established PHP-specific profiler. It supports PHP 5.3 through 8.5 and macOS, has unlimited users on every plan, and usually needs root plus a daemon; it has no free tier, only a 14-day trial. PHPRay covers 8.0–8.5 and installs without root. - [A PHP profiler in production](https://phpray.dev/php-profiler-in-production/): the constraints that rule most profilers out, and what is left. ## Specific problems Each of these answers one question with our own measurements, and each ends with questions people actually ask. - [Why a WooCommerce shop is slow](https://phpray.dev/slow-woocommerce/): finding which plugin, which query and since when — including per-plugin attribution from a real shop. - [WooCommerce checkout errors](https://phpray.dev/woocommerce-checkout-errors/): failures that cannot be reproduced. In one real shop's week — 39,995 requests — 1,089 responses returned 5xx, including HTTP 503 on /checkout/, none reported by a customer. - [What a real WooCommerce shop's performance looks like](https://phpray.dev/woocommerce-performance-data/): measured numbers from five production shops over 24 hours — 80,921 requests, p95 from 55 to 235 ms, 5xx share from 0.3% to 5.6%, self time per plugin and the queries that cost the most. There is no other public baseline for this. Every figure is pulled from the public MCP endpoint when the page is built, so anyone can verify it without an account. - [Monitoring client sites as an agency](https://phpray.dev/wordpress-agency-monitoring/): for someone running 25–100 client WordPress and WooCommerce sites — one list sorted by what is failing, installs without root on the shared hosting clients actually use, and priced per fleet rather than per host. States plainly where Datadog, New Relic or Tideways is the better choice instead. - [PHPRay for hosting providers](https://phpray.dev/host-edition/): running it across many customer accounts on shared hosting. ## See the output before installing anything - [An example report](https://phpray.dev/example-report/): a complete report from a live WooCommerce shop with the site name removed — which plugin costs the most milliseconds per request, which SQL fingerprints cost the most database time, which requests failed. One HTML file, no account. - [Read-only console](https://app.phpray.dev/demo): the same data in the web console, no credentials. - [Atom feed](https://phpray.dev/feed.xml): new measurements as they are published. ## Install - [Quickstart](https://phpray.dev/en/docs/install/quickstart): one line, no account. - [Documentation](https://phpray.dev/en/docs): installation, configuration, API. - [Source](https://github.com/stephen1137/phpray): C extension and Go collector, Apache-2.0. The WordPress plugin is GPLv2 and needs no extension at all. ## What PHPRay does not do Stated so an agent does not have to guess. - No step debugging and no breakpoints. That is Xdebug's job. - No code coverage. - No complete call graph of every request: full function attribution runs on a sample (3% by default) or scoped to one URL for a few minutes. - No CI performance gates and no front-end observability. - Requests that die before PHP's shutdown hook — a hard fatal, an OOM kill — are not recorded by the userland WordPress plugin. The extension sees more. ## Who builds it IQgroup Adam Buhl, Opole, Poland — operator of the IQhost hosting brand, which runs PHP for thousands of sites. PHPRay is developed there and deployed there first. Cloud data is stored in the EU.