YII3-SWOOLE
September 9, 2026 ยท View on GitHub
The package provides the Swoole HTTP server for the Yii 3 application.
See also:
- YII3-SWOOLE-DOCKER-APP - The repository contains the YII3 application template, and the additional configuration required to run the Swoole HTTP server on Docker.
Requirement
- PHP 8.2 or higher.
- Swoole PHP extension 6.2.0 or higher.
Installation
composer require klsoft/yii3-swoole
How to use
Configure the resetting of service states.
For web applications that use AssetManager, add the following to the config/web/di/application.php file:
use Psr\Container\ContainerInterface;
use Yiisoft\Aliases\Aliases;
use Yiisoft\Assets\AssetManager;
use Yiisoft\Assets\AssetLoaderInterface;
use Yiisoft\Assets\AssetConverterInterface;
use Yiisoft\Assets\AssetRegistrar;
return [
// ...
AssetManager::class => [
'definition' => static function (ContainerInterface $container) use ($params): AssetManager {
$assetManager = new AssetManager(
$container->get(Aliases::class),
$container->get(AssetLoaderInterface::class),
$params['yiisoft/assets']['assetManager']['allowedBundleNames'],
$params['yiisoft/assets']['assetManager']['customizedBundles'],
);
$assetManager = $assetManager
->withConverter($container->get(AssetConverterInterface::class));
if ($params['yiisoft/assets']['assetManager']['publisher'] !== null) {
$assetManager = $assetManager->withPublisher(
$container->get($params['yiisoft/assets']['assetManager']['publisher'])
);
}
$assetManager->registerMany($params['yiisoft/assets']['assetManager']['register']);
return $assetManager;
},
'reset' => function (ContainerInterface $container) {
$this->registrar = new AssetRegistrar($container->get(Aliases::class), $container->get(AssetLoaderInterface::class));
},
],
];
Start the Swoole HTTP server:
./yii swoole start
Start the Swoole HTTP server using the specified options:
./yii swoole start --address=127.0.0.1 --port=9501
Restart the Swoole HTTP server:
./yii swoole restart
Restart the Swoole HTTP server worker processes:
./yii swoole reload
Shutdown the Swoole HTTP server:
./yii swoole shutdown
Configuring the Swoole HTTP server.
Add the Swoole HTTP server settings to the config/common/params.php file and then restart the server:
Example:
return [
// ...
'klsoft/yii3-swoole' => [
'swooleServerSettings' => [
'log_file' => __DIR__ . '/../../runtime/logs/swoole.log'
]
],
];
Enable SSL:
return [
// ...
'klsoft/yii3-swoole' => [
'enableSwooleSsl' => true,
'swooleServerSettings' => [
'ssl_cert_file' => __DIR__ . '/../ssl/domain.crt',
'ssl_key_file' => __DIR__ . '/../ssl/domain.key'
]
],
];
Configuring the SwooleRequestHandlerInterface.
Configure your own version of the SwooleRequestHandlerInterface in the config/common/di/application.php file:
use Klsoft\Yii3Swoole\SwooleRequestHandlerInterface;
use Psr\Container\ContainerInterface;
return [
// ...
SwooleRequestHandlerInterface::class => static function (ContainerInterface $container) {
return new MySwooleRequestHandler(
// ...
);
}
];
Use cron to start the Swoole HTTP server automatically.
Edit the crontab file:
crontab -e
Add the following line:
@reboot path-to-app/yii swoole start --address=127.0.0.1 --port=9501
How to use with Docker
- Add the package to the
composer.json:
{
// ...
"require": {
// ...
"klsoft/yii3-swoole": "^1.0"
},
}
- Add the Dockerfile and docker-compose.yml to the root directory of a Yii3 application.
- Replace the .dockerignore file in the root directory of a Yii3 application.
- Start the application:
docker compose up -d
Open your browser to the URL http://localhost:9501
Restart the Swoole HTTP server worker processes:
docker compose exec app ./yii swoole reload
Shutdown the Swoole HTTP server:
docker compose exec app ./yii swoole shutdown