klsoft / yii3-swoole
The package provides the Swoole HTTP server for the Yii 3 application
1.0.0
2026-05-25 04:40 UTC
Requires
- ext-swoole: >=6.2
- yiisoft/aliases: ^3.1.1
- yiisoft/yii-console: ^2.4.2
- yiisoft/yii-runner: ^2.2
README
The package provides the Swoole HTTP server for the Yii 3 application.
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 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/web/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/web/di/application.php file:
use Klsoft\Yii3Swoole\SwooleRequestHandlerInterface; use Psr\Container\ContainerInterface; return [ // ... SwooleRequestHandlerInterface::class => static function (ContainerInterface $container) { return new MySwooleRequestHandler( // ... ); } ];