{"adoption": {"forks": 104, "observed_at": "2026-08-28T04:07:05.538800+00:00", "stars": 2629}, "canonical_url": "https://ross.abutalabs.com/products/php-spx", "card": {"archived": false, "artifact_type": "plugin", "description": "A simple & straight-to-the-point PHP profiling extension with its built-in web UI", "domain": ["performance", "developer-tools", "web-development", "data-visualization"], "enriched": true, "function": ["monitoring", "benchmarking", "data-visualization", "developer-tools"], "health_score": 94, "homepage": null, "language": "C", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["NoiseByNorthwest/php-spx"], "name": "NoiseByNorthwest/php-spx", "platform": ["php", "cli"], "pushed_at": "2026-08-19T22:27:12+00:00", "repo": "NoiseByNorthwest/php-spx", "stars": 2629, "tags": ["profiler", "php-extension", "flamegraph", "tracing", "statistical-profiling", "web-ui", "self-hosted", "linux", "macos", "web-server"], "topics": ["php", "profiler", "tracer", "php-extension", "visualization", "flamegraph", "reverse-engineering", "statistical-profiling", "data-visualization", "performance-analysis"], "urls": [], "use_cases": ["profile slow PHP scripts", "find performance bottlenecks in PHP web requests", "generate flamegraphs for PHP applications", "profile long-running PHP CLI scripts", "analyze memory usage of PHP code", "trace millions of PHP function calls with a timeline", "self-hosted PHP profiling without SaaS"], "what_it_is": "SPX is a PHP profiling extension written in C that collects function-level performance metrics (time, memory, I/O) with full call stack context. It ships with a built-in web UI featuring interactive timeline, flat profile, and flamegraph visualizations.", "when_to_avoid": ["you need profiling on platforms other than GNU/Linux, macOS, or FreeBSD", "you need continuous production APM with alerting and dashboards rather than on-demand profiling", "your PHP version is outside 5.4-8.5 or your architecture is not x86-64/ARM64"], "when_to_choose": ["you need zero-instrumentation profiling of PHP apps via an environment variable or web toggle", "you want timeline or flamegraph analysis that preserves full call stacks (unlike Xhprof)", "you require profiling data to stay on your own infrastructure", "you need to profile both web requests and CLI scripts"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/php-spx", "repo": "NoiseByNorthwest/php-spx", "role": "main", "score": 74}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:05.538800+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:19:39.578846+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d3e99bbf2543b171fc30a9a7720d71bfad32a21d6b45f9f839a0f7ef9e9b2f2b", "fetched_at": "2026-08-28T04:07:05.538800+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NoiseByNorthwest/php-spx"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:05.538800+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:19:39.578846+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d3e99bbf2543b171fc30a9a7720d71bfad32a21d6b45f9f839a0f7ef9e9b2f2b", "fetched_at": "2026-08-28T04:07:05.538800+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NoiseByNorthwest/php-spx"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:19:39.578846+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d3e99bbf2543b171fc30a9a7720d71bfad32a21d6b45f9f839a0f7ef9e9b2f2b", "fetched_at": "2026-08-28T04:07:05.538800+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NoiseByNorthwest/php-spx"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:07:05.538800+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:05.538800+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:05.538800+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:19:39.578846+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d3e99bbf2543b171fc30a9a7720d71bfad32a21d6b45f9f839a0f7ef9e9b2f2b", "fetched_at": "2026-08-28T04:07:05.538800+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NoiseByNorthwest/php-spx"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:05.538800+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:05.538800+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:19:39.578846+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d3e99bbf2543b171fc30a9a7720d71bfad32a21d6b45f9f839a0f7ef9e9b2f2b", "fetched_at": "2026-08-28T04:07:05.538800+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NoiseByNorthwest/php-spx"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:05.538800+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:05.538800+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:05.538800+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:19:39.578846+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d3e99bbf2543b171fc30a9a7720d71bfad32a21d6b45f9f839a0f7ef9e9b2f2b", "fetched_at": "2026-08-28T04:07:05.538800+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NoiseByNorthwest/php-spx"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:05.538800+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:05.538800+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:19:39.578846+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d3e99bbf2543b171fc30a9a7720d71bfad32a21d6b45f9f839a0f7ef9e9b2f2b", "fetched_at": "2026-08-28T04:07:05.538800+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NoiseByNorthwest/php-spx"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:19:39.578846+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d3e99bbf2543b171fc30a9a7720d71bfad32a21d6b45f9f839a0f7ef9e9b2f2b", "fetched_at": "2026-08-28T04:07:05.538800+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NoiseByNorthwest/php-spx"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:19:39.578846+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d3e99bbf2543b171fc30a9a7720d71bfad32a21d6b45f9f839a0f7ef9e9b2f2b", "fetched_at": "2026-08-28T04:07:05.538800+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NoiseByNorthwest/php-spx"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:19:39.578846+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d3e99bbf2543b171fc30a9a7720d71bfad32a21d6b45f9f839a0f7ef9e9b2f2b", "fetched_at": "2026-08-28T04:07:05.538800+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NoiseByNorthwest/php-spx"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 100, "rhythm": 28}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3361, "days_push": 14, "days_rel": 323, "gap_med": 96, "n_releases_24m": 6}, "score": 74, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}