Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Xhprof Profiler Bundle Laravel Package

zim32/xhprof-profiler-bundle

Symfony bundle that integrates XHProf profiling into the Web Debug Toolbar and Profiler, helping you capture and inspect function call graphs, timings, and performance data to identify bottlenecks in PHP applications.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Critical finding — stack mismatch. The package is zim32/xhprof-profiler-bundle, a Symfony bundle, not a Laravel package. The request frames this as "Laravel/PHP"; that framing is wrong, and it changes the recommendation materially. Laravel does not use the Symfony bundle/kernel registration model, so the package cannot be dropped in. At best we can lift the collector/panel logic and re-implement it as a Laravel service provider + Debugbar panel — which is a rewrite, not an integration.

Architecture fit (Symfony only). The bundle is a thin adapter: it registers a WebProfiler data collector, a toolbar panel, and a profiler page that reads data produced by the Tideways XHProf PHP extension (the OSS C extension fork of XHProf — not the commercial Tideways APM). Runtime cost is the extension's; the bundle is UI and wiring. In a Symfony dev environment this is a clean, idiomatic fit. In Laravel it is not a fit at all.

Integration feasibility.

  • Symfony: high, assuming the extension is installed and a compatible Symfony version is supported.
  • Laravel: low. The viable Laravel equivalents are barryvdh/laravel-debugbar, Laravel Telescope, Clockwork, or a hand-rolled middleware wrapping the XHProf extension directly. Any of these is a better use of effort than porting a 2-star bundle.
  • Prerequisite risk: the whole value chain depends on a C extension being compiled/installed in the container image. That is an infrastructure change, not a Composer change.

Technical risk (high). Signals are uniformly weak: 2 stars, 0 dependents, single maintainer, no vendor backing, and a dependency on an extension whose long-term OSS maintenance is uncertain (Tideways' commercial focus has moved on). Symfony major-version compatibility (6.x/7.x), PHP 8.x support, and the extension's own PHP 8 build status are all unverified and must be treated as unknown risk.

Key questions.

  1. Is any part of our estate actually Symfony, or is this entirely a Laravel question? If Laravel-only, stop here.
  2. Which Symfony and PHP versions must be supported, and does the bundle declare them?
  3. Is the Tideways XHProf extension installable and maintained for our base images (Alpine/php:8.x-fpm)?
  4. What is the profiling overhead and memory footprint when enabled in dev?
  5. Are there security/data-handling concerns (profiler data can expose source paths and request payloads — must be strictly dev-gated)?
  6. Build-vs-adopt: how many lines is the collector/panel, and is porting cheaper than adopting an unmaintained dependency?

Integration Approach

Stack fit. PHP: yes. Symfony: yes. Laravel: no. The correct integration target is a Symfony dev environment; for a Laravel codebase the package is out of scope.

Recommended path for a Laravel stack.

  1. Do not add zim32/xhprof-profiler-bundle to a Laravel app. Note the decision and rationale.
  2. If request-level profiling is the actual need, evaluate barryvdh/laravel-debugbar (already widely adopted) plus either Telescope or the XHProf extension exposed through a dedicated middleware and a Debugbar panel.
  3. If the specific Tideways XHProf callgraph view is a hard requirement, treat it as a small internal module: a middleware that starts/stops the extension, a storage step, and a Debugbar panel renderer. Scope it explicitly.

Recommended path for a Symfony stack.

  1. Sandbox spike in an isolated Symfony app at the target major version; confirm the extension compiles and the panel renders.
  2. Pin bundle + Symfony + PHP versions in composer.json.
  3. Add the extension to the dev-only Docker image, not the production image.
  4. Gate the toolbar/profiler strictly to APP_ENV=dev and never expose it on shared or internet-facing hosts.

Migration path / compatibility. Because there is no production runtime dependency, adoption is reversible — it lives in require-dev and the dev image. The irreversible piece is the C extension and any internal tooling built on top of its output. Vendor the panel code if we depend on it, so an abandoned upstream doesn't strand us.

Sequencing.

  1. Confirm stack reality (Symfony vs. Laravel) — this is the gate.
  2. If Laravel: evaluate Debugbar/Telescope/Clockwork in a spike; produce a comparison.
  3. If Symfony: extension-install spike → bundle spike → pin versions → dev-only rollout.
  4. Document the decision either way; the cost of "we'll just try it" here is engineering time chasing an unmaintained dependency.

Operational Impact

Maintenance. Single maintainer, 2 stars, 0 dependents. Assume low bus factor and possible abandonment. Any adoption must be paired with a plan to own the code (fork/vendor) rather than rely on upstream fixes. Budget for periodic Symfony-compatibility patching.

Support. Community-only, no SLA, no vendor. Internal expertise must be built; there is no escalation path.

Scaling. This is a development-time tool. It should never be enabled in production: XHProf overhead is non-trivial, the collected data can be large and may contain sensitive request data, and profiler endpoints are an information-disclosure vector. Limit to developer workstations and ephemeral review environments; consider sampling to control overhead on busy dev/staging hosts.

Failure modes.

  • Extension absent or fails to compile → bundle is inert or throws in dev; the failure surfaces as a broken toolbar, not a clear diagnostic.
  • Symfony major upgrade → bundle breaks; because nothing else depends on it, breakage may go unnoticed until a developer needs the panel.
  • Accidental production enablement → performance hit and data exposure.
  • Container image drift → extension silently dropped during a base-image refresh.

Ramp-up. For a PHP/Symfony developer, low: install the extension, enable the bundle, read the panel. The real ramp-up cost is interpreting XHProf/Tideways callgraph output, which is a distinct skill and the same regardless of which tooling we choose. For a Laravel team, ramp-up is effectively "learn a Symfony bundle we cannot use," which is wasted effort.

Bottom line. Score 0.07 and 2 stars are consistent with what this is: a niche, unmaintained, single-author Symfony dev-tooling bundle. It is not a Laravel package, it has no dependents, and it carries a hard dependency on a C extension. Recommendation: do not adopt. For Symfony, treat it as a low-cost, reversible dev-only convenience with a vendoring fallback. For Laravel, close it out and evaluate Debugbar/Telescope instead.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin
skyraptor/chatter
edlugz/sasapay
abbasudo/artisan-route