workerman/webman-framework
Webman is a high-performance PHP framework built on Workerman for fast, scalable web apps and APIs. It supports HTTP, WebSocket, TCP, and other protocols, with simple routing, middleware, low overhead, and persistent memory.
Architecture fit. The framing question matters more than any line of code: workerman/webman-framework is not a library that augments a Laravel application — it is a competing application kernel. It bootstraps its own runtime on top of Workerman's event loop and reuses illuminate/* components (Eloquent, validation, translation, pagination) as standalone pieces. Architecturally it inverts Laravel's shared-nothing, bootstrap-per-request model into persistent, long-lived worker processes with an event loop. That is a genuine performance and capability fit for high-concurrency JSON APIs, WebSocket/SSE endpoints, long-poll, and I/O-bound aggregation services — and a poor fit for a team whose entire operational mental model is "nginx + php-fpm + stateless request."
Integration feasibility. Low as a dependency; moderate-to-high as a sidecar service. There is no credible path to composer require workerman/webman-framework inside an existing Laravel app and getting incremental value — you would be booting two kernels. The realistic integration is process-level: run webman as a separate deployable behind the same edge (nginx/gateway), sharing the database, Redis, and a framework-agnostic domain package. Anything that depends on Laravel facades, global helpers, service providers, or the container's request lifecycle will not port cleanly.
Technical risk.
148 stars on this specific repo and 0 dependents are misleading signals — dependents are near-zero because frameworks are consumed via project scaffolding, not as transitive dependencies — but the bus factor is real regardless.exit/die, rely on superglobals, or hold per-process singletons will misbehave or silently corrupt state.2026-08-24 last-release timestamp is anomalous relative to the assessment date; treat the version/date signals from this dataset as unverified until confirmed against Packagist and the repo tags.Key questions.
Stack fit. Composer-native, PHP 8.x, PSR-7/PSR-15-shaped, and deliberately Laravel-flavored — which is the main reason to consider it over Swoole/ReactPHP alternatives. Eloquent and the validator are the same code your team already knows. The gap is the runtime contract, not the API surface. Anything reusable must be extracted into a private Composer package with zero framework coupling: entities, value objects, repository interfaces, and an Eloquent-backed implementation that both Laravel and webman consume with a compatible illuminate/database constraint.
Migration path. Strangler pattern, not rewrite:
Compatibility. Pin illuminate/* versions explicitly and verify they match the Laravel version in the monolith — drift here causes subtle Eloquent behavior differences. Audit candidate shared packages for exit/die, static caches, $_SERVER/$_SESSION reliance, and non-pooled clients. Confirm the DB/Redis drivers you actually use; pooled connections are a benefit but change failure semantics (stale connections after a DB failover need explicit handling).
Sequencing. Benchmark spike (1 week) → shared-package extraction (2–3 weeks) → pilot endpoint in staging with load test (stretch: 4–6 weeks elapsed) → production canary at low traffic percentage → ops runbook and on-call handover → incremental route migration. Gate each step; the pilot should be abortable without touching the monolith.
Maintenance. Expect to pin versions tightly and budget for a periodic "is upstream healthy?" review. Given the maintainer concentration, treat the framework as a fork-in-waiting: keep the diff surface small enough that owning it is conceivable. The opportunity: 37.24 and composite 22.57 scores read as "interesting, not urgent" — consistent with a recommendation to pilot, not standardize.
Support. Community and Stack Overflow density are far below Laravel's. Internal expertise must be built, not hired. Your existing Laravel debugging reflexes (Xdebug per-request, dd(), request-scoped logs) partially transfer but leave real gaps: you need worker-level introspection, memory profiling across requests, and an understanding of reload-vs-restart semantics. Plan for one named owner.
Scaling. This is where the package earns consideration. Multiple worker processes per container, connection pooling to MySQL/Redis, and native WebSocket support let you handle far more concurrent connections per unit of RAM than php-fpm. Scaling becomes a process/container count knob plus a load balancer — but capacity planning shifts from "requests per second per pod" to "connections and memory ceiling per worker," which your existing dashboards probably do not measure.
Failure modes to instrument for.
memory_get_usage tracking and scheduled graceful worker recycling.Ramp-up. A competent Laravel developer ships a working endpoint in a few days; becoming safe in persistent-process semantics realistically takes 4–8 weeks of production exposure. Allocate explicit training on lifecycle, memory, blocking I/O, and state isolation before the first production route — retrofitting that discipline after an incident is significantly more expensive than teaching it up front.
How can I help you explore Laravel packages today?