Framework
easy-swoole/easyswoole avatar
easy-swoole/easyswoole

EasySwoole: a resident-memory PHP framework built to kill file loading

swoole,easyswoole,swoole framework

4,758 stars501 forksPHPApache-2.0

At a glance

What is it?
EasySwoole is a distributed, persistent memory PHP framework based on the Swoole extension, created specifically for APIs to escape the performance penalties of process calls and file loading. It wraps the Swoole server with built-in coroutine HTTP, TCP, WebSocket and UDP support, middleware across protocols, an ORM, coroutine clients and connection pools, under Apache 2.0.
Who is it for?
Choose EasySwoole when a PHP team wants Swoole's resident memory execution model for an API service without managing the raw Swoole server API, and the middleware, ORM, connection pool and coroutine client stack covers the everyday needs.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 37 days ago.
What is it written in?
Mainly PHP, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.

Editorial analysis

PHP that stays resident in memory

EasySwoole is a distributed, persistent memory PHP framework based on the Swoole extension, and its stated reason to exist is narrow and technical, it was created specifically for APIs to get rid of the performance penalties associated with process calls and file loading, the two costs that dominate the traditional PHP request lifecycle where every request reboots the application. The framework highly encapsulates the Swoole Server while maintaining the original features of the Swoole server, and supports simultaneous monitoring of HTTP, custom TCP, and UDP protocols in one process, letting developers write multi-process, asynchronous, highly available applications with minimal learning cost in the project's own framing. The license is Apache 2.0, the default branch is 3.x, and documentation lives at easyswoole.com with a separate documentation repository for the 3.7 line.

A feature list that reads like a full server stack

The capability list goes well beyond routing. Servers are built in for HTTP, TCP, WebSocket and UDP with coroutine support, and middleware applies across all four protocols, not just HTTP. HTTP messages follow PSR-7, and a global dependency injection container wires objects. On the data side there is a database ORM plus coroutine clients for MySQL, Redis, RPC and HTTP, with universal connection pools underneath them. Task execution supports both coroutine and asynchronous delivery, and custom user processes escape the worker model when needed. The web tier has a high performance router, RESTful support, and a fast and flexible parameter validator, while operations get a logging component, remote console support and a crontab rule timer, so scheduled jobs and live inspection ship with the framework rather than through additions.

Fifteen thousand requests per second on one core, published

The README publishes ab results for the minimal controller, an index method writing Hello World through the framework's response object, 21 bytes of document length. On a one core, one gigabyte machine, ab with concurrency 100 over 10000 requests completed in 0.652 seconds with zero failed requests and zero write errors, a mean of 15325.16 requests per second. On an eight core, sixteen gigabyte machine the same test reported 66935.97 requests per second in 0.746 seconds, again with no failures. The numbers deserve their context, they measure the framework's floor on a trivial response, not a database backed endpoint, but they are published in enough detail, concurrency level, transfer totals, per request times, to be reproduced by anyone with ab and two machines.

Three commands from composer to a listening port

The quick start is three lines, exactly as published:

code
composer require easyswoole/easyswoole=3.7.x
php vendor/bin/easyswoole.php install
php easyswoole.php server start

After which the server listens on port 9501, the same port the ab benchmarks targeted. The install step scaffolds the application skeleton the server start command then boots, and the version constraint pins the 3.7 line explicitly. The demo repository linked from the README, easy-swoole/demo, shows the application structure the installer produces, with controllers living under an App namespace and extending EasySwoole's AbstractInterface Controller base class, the index method writing to the response being the entire minimal handler.

A Docker image pinned to PHP 8.1.22 and Swoole 4.8.13

The documented container path is a precisely pinned image, easyswoolexuesi2021/easyswoole tagged php8.1.22-alpine3.16-swoole4.8.13, encoding the PHP version, the Alpine base and the Swoole extension version in the tag itself, with more variants on Docker Hub and the Dockerfiles maintained in a separate repository. The run command mounts the project at /var/www, which the README marks as the WorkerDir, publishes port 9501, and enters with /bin/sh as root under privileged mode, a shell first workflow rather than an opinionated entrypoint. Inside the container the same three commands apply, composer require, install, server start, so the container is a pinned runtime environment rather than a packaged application, matching how Swoole projects are usually developed.

Support runs through QQ, one group behind a 599 yuan fee

Community support is organized around QQ groups, and the list is candid about their state. A VIP group numbered 579434607 requires a paid entry of 599 yuan, six official free groups are listed with the first five marked full and the sixth, 524475224, open. Commercial support is offered directly, with a QQ contact at 291323003 and the email address [email protected], so paid help exists in two tiers, a group membership and a proper commercial engagement. The documentation is bilingual in structure, an English README alongside README_CN.md, with the doc site serving both audiences and the Git for Doc repository carrying the 3.7 documentation source for anyone who prefers reading it versioned.

A 3.x branch with a two year gap between releases

The release history shows a particular rhythm, 3.6.3 in February 2023, 3.7.1 in March 2023, and then 3.7.2 in September 2025, a two and a half year gap between maintenance releases, with the repository's last push on 2026-08-24 showing continued work between tags. The default branch is named 3.x, declaring the major version as the project's ongoing identity. The repository itself is compact, a bin directory for the installer and server entry points, src for the framework, a tests directory, and the composer.json that Packagist serves, with the logo and bilingual readmes at the root. No release notes are published per tag on GitHub, so the changelog between 3.7.1 and 3.7.2 lives in the commit history rather than a summarized document.

Editorial conclusion

Choose EasySwoole when a PHP team wants Swoole's resident memory execution model for an API service without managing the raw Swoole server API, and the middleware, ORM, connection pool and coroutine client stack covers the everyday needs. Look at plain Swoole or another framework if you need an ecosystem larger than what the project and its demo repository document, or if commercial-grade support matters, here the visible support channels are QQ groups and a paid commercial contact. Before adopting, verify the Swoole extension version against the pinned Docker image pairing of PHP 8.1.22 with Swoole 4.8.13, and reproduce the published ab numbers on your own endpoints, since the headline figures measure a 21 byte Hello World response.

Frequently asked questions

What is EasySwoole?

EasySwoole is a distributed, persistent memory PHP framework based on the Swoole extension, created specifically for APIs to avoid the performance penalties of process calls and file loading. It encapsulates the Swoole server and supports simultaneous HTTP, custom TCP and UDP protocol handling, and is Apache 2.0 licensed.

How do you start an EasySwoole server?

Run composer require easyswoole/easyswoole=3.7.x, then php vendor/bin/easyswoole.php install to scaffold the application, then php easyswoole.php server start. The server listens on port 9501, and a Docker image pinned to PHP 8.1.22 and Swoole 4.8.13 is available with the project mounted at /var/www.

What protocols does EasySwoole support?

Built-in servers cover HTTP, TCP, WebSocket and UDP with coroutine support, and middleware can be applied across all four. The framework also includes coroutine clients for MySQL, Redis, RPC and HTTP, an ORM, connection pools, a crontab rule timer and remote console support.

Official sources

  1. easy-swoole/easyswoole on GitHub
  2. License: Apache-2.0
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/easy-swoole-easyswoole.svg)](https://hysenlabs.com/projects/easy-swoole-easyswoole)