A portable request lifecycle.
Standard PHP hosting now, bounded worker adapters for further validation.
PHP-FPM / cPanel
The live site runs on PHP 8.4 behind Apache/PHP-FPM. Only index.php, static assets and the sanitized source download are public. Application releases and storage live outside the document root. The deployment uses an atomic current symlink and retains the previous release for rollback. TLS is issued through hosting AutoSSL.
FrankenPHP
docker build -f deploy/Dockerfile -t icom-framework .
docker run --rm -p 8080:8080 --env-file .env \
-v icom-storage:/app/storage icom-frameworkWorker behavior
deploy/frankenphp-worker.php boots once, creates a new request scope per request and exits after MAX_REQUESTS (default 500). Global/static state and arbitrary external services remain the application author’s responsibility. FrankenPHP and Swoole are not installed on this cPanel host. The adapter files and repeated-request tests are included; production runtime benchmarks and concurrency/soak tests for those servers remain unverified.
Swoole
# Requires the Swoole extension on a separately managed server.
php deploy/swoole.phpCloud deployment
deploy/kubernetes.yaml includes readiness/liveness probes, resource limits and security context. Supply an application key through a Kubernetes Secret. The example uses one replica because file-backed cache/rate limiting is node-local. For scale-out, replace those stores with shared infrastructure and coordinate migrations separately. The container and Kubernetes examples must be exercised in your own runtime before rollout.
Health and readiness
GET /health # liveness; no sensitive diagnostics
GET /ready # database + writable application storage
GET /api/status # preview version and SAPI