I built ZealPHP, an MIT licensed PHP runtime framework powered by OpenSwoole, now powering parts of Selfmade Ninja Academy + Labs.
Selfmade Ninja Labs is a browser-based hands-on learning platform where students get real lab environments to build, break, debug and learn by doing.
The goal of ZealPHP is to let PHP run as a long-running application server while keeping the classic PHP dev vibes.
With ZealPHP, you can still serve normal pages from a document root with the same FPM mental model, but the same app can also stream responses, hold WebSocket connections, run background tasks, schedule timers and keep runtime state.
I built this because I have a large PHP codebase handling dashboards, lab management, student workflows, auth, APIs and internal tools. Now it needs a lot more real-time behaviour with AI agents, streaming, WebSockets, SSE, live updates and background workflows.
I wanted to solve these problems by changing the request model PHP runs inside, while still addressing the long-running caveats with proper engineering.
So I built ZealPHP.
I already ported our Labs dashboard to it. Right now it is running in parallel with dual paths: Apache + ZealPHP, serving the same code on different ports.
So far, so good.
I have documented this case study on the website as well.
The goal is not to replace Laravel or Symfony. ZealPHP can even run Symfony.
The goal is to explore what PHP looks like when it runs as an HTTP application server with async capabilities, while still keeping the classic PHP mental model.
Website: https://php.zeal.ninja
GitHub: GitHub - sibidharan/zealphp: A PHP HTTP server built on OpenSwoole. WebSocket, SSE, coroutines, shared memory — first-class because the server never shuts down between requests. Bring your existing PHP code. · GitHub
Why ZealPHP: ZealPHP · Why ZealPHP? · ZealPHP
Tradeoffs: ZealPHP · Design Trade-offs · ZealPHP
Docs and Learn section are available from the website.
I am looking for OSS feedback before I push this further.
- does this positioning make sense?
- are the docs + learn section clear enough?
- are the long-running PHP tradeoffs addressed well?
- are any trust signals missing?
- what long-running caveats do you think are still not addressed?
- what would make you trust or reject a framework like this?
It is in alpha, but not just a toy anymore.
It was born from our Labs platform, which started in 2021, got separated from the project as a framework in 2024, and has been engineered till date.