wilaak / swoldier
Swoole micro-framework
Installs: 2
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/wilaak/swoldier
Requires
- php: >=8.3
- psr/log: ^3.0
- swoole/ide-helper: ^6.0
- wilaak/radix-router: ^3.4
Requires (Dev)
- php: >=8.3
- friendsofphp/php-cs-fixer: ^3.87
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^11.0
This package is auto-updated.
Last update: 2025-11-04 14:09:32 UTC
README
Swoldier is a minimal micro-framework built on top of Swoole for building high-performance PHP applications.
Basic Architecture
Swoldier applications operate with two types of workers:
- HTTP Workers: These handle incoming HTTP requests and should be kept lean to maximize cache efficiency and response speed.
- Task Workers: Designed to offload any non-HTTP or long-running tasks, ensuring that HTTP workers remain responsive and performant.
Usage
Below is a usage example to get your started.
<?php require __DIR__ . '/vendor/autoload.php'; use Swoldier\{App, BatchLogger, Event, Http\HttpContext}; use Swoldier\Middleware\RequestLogger; // Create the application instance $app = new App( port: 8082, httpWorkers: 2, taskWorkers: 1 ); // Create a logger instance $logger = new BatchLogger(); // Register middleware and logger for each worker $app->on(Event::WorkerStart, function ($workerId) use (&$logger, $app) { $workerLogger = $logger->withSettings(channel: "worker-{$workerId}"); $app->use(new RequestLogger(logger: $workerLogger)); }); // Register a task handler $app->task('testTask', function (string $data) { // Simulate some background work return strtoupper($data); }); // Define a route handler $app->get('/', function (HttpContext $ctx) { // Run a task and wait for the result $result = $ctx->awaitTask('testTask', ['test']); // Send the result in the response $ctx->end("Task result: $result"); }); // Log server startup $app->run(function ($host, $port) use (&$logger) { $logger->info("Server running at http://{$host}:{$port}/"); });