phpstreamserver/symfony
Runs Symfony applications on the PHP Stream Server, a high-performance application server with process management, PSR-7/PSR-15 support, and configurable worker pools. Provides Symfony integration, console commands, and configuration to replace PHP-FPM.
Architecture fit. luzrain/phpstreamserver-bundle wires PHPStreamServer — a PHP application/process server with a worker model and HTTP server — into a framework kernel. The v0.2.2 note is more architecturally significant than a typical patch: it moves deletion of uploaded files out of the request path and into a kernel.terminate listener, and adds tests asserting deletion occurs. That tells us the bundle has taken ownership of a responsibility PHP-FPM normally handles implicitly (cleaning upload_tmp_dir artifacts at request end). Under a long-running worker model, that ownership is mandatory — but it also means the bundle now sits in the request lifecycle's teardown path, which is a sensitive place for a pre-1.0 package to be.
Integration feasibility. Standard Composer install plus bundle/service-provider registration and server config (workers, listeners, ports, static assets). Feasible for a small platform team. The blocker is not install effort, it is that 0.2.x implies an unsettled public API and that this release changes runtime behavior at patch level.
Technical risk.
kernel.terminate firing. On fatal error, OOM, timeout, or hard SIGKILL during shutdown, the listener may not run, leaving orphaned temp files. "Added tests" is a positive signal but tests presumably cover the happy path.Key questions.
kernel.terminate listener run on fatal error, request timeout, and SIGTERM during graceful shutdown — and is there a sweep/reaper for orphans?pcntl, sockets, event) are required? Windows support?Given the evidence base is a single patch note on a 0.2.x package, confidence in this assessment is low; treat it as a screening, not a recommendation.
Stack fit. Fits a Laravel 10/11 + PHP 8.1+ containerized stack as a replacement for nginx + PHP-FPM, or as a process supervisor only. Because it overlaps functionally with Octane, pick one HTTP serving model per service — do not run both.
Migration path. Pilot-first, not fleet-first:
kernel.terminate cleanup behavior under load and under induced failures.Compatibility. Verify PHP version matrix and required extensions in CI before anything else; confirm framework version constraints resolve against our composer.lock. Pin exact versions (0.2.2, not ^0.2) and treat every patch as a code review item.
Sequencing.
Maintenance. Highest ongoing cost is version discipline: pre-1.0 plus patch-level behavior changes means a named owner must read every changelog and re-run the upload-cleanup test suite on each bump. Keep a fork-or-replace contingency documented; the exit path back to FPM should remain exercised, not theoretical.
Support. Community support will be thin. Assume internal ownership: runbooks for worker restart, port conflicts, and disk pressure. Budget platform-engineering time for the first two sprints, tapering to steady-state maintenance.
Scaling. Scale by worker pool size and replica count; watch per-worker memory as requests accumulate and plan scheduled worker recycling. Zero-downtime deploys depend on graceful drain semantics, which must be verified rather than assumed. Temporary upload storage becomes a capacity-planning concern with a real I/O profile — treat the temp volume as a monitored resource with alerts, not an afterthought.
Failure modes.
kernel.terminate does not fire (fatal error, OOM, timeout, SIGKILL) → gradual disk exhaustion, then cascading write failures. Mitigate with an independent periodic reaper and disk alerts.Ramp-up. Roughly one to two sprints for a platform engineer to reach production comfort, plus SRE training on the process/worker model (a genuine mental-model shift from FPM's request-per-process assumption). The v0.2.2 change is a good training case: it is exactly the kind of implicit runtime contract a team must now own explicitly.
How can I help you explore Laravel packages today?