Swoolefony is a Swoole bundle for Symfony. It provides integration via a runtime class and management via commands.
Install it using composer:
composer require swoolefony/swoole-bundle
Add the runtime class to your composer.json
in the extra
section:
"extra": {
"runtime": {
"class": "Swoolefony\\SwooleBundle\\Runtime\\SwooleRuntime"
}
}
With the runtime in place, the default public/index.php
would be the entry point for start the application. Once it is run,
the Swoole server is started based on the provided configuration.
The Swoole server mode, IP, and port can be controlled via environment variables:
Enviornment Variable | Description | Default Value |
---|---|---|
SWOOLEFONY_MODE |
The server mode to run Swoole in (e.g. http , websocket ) |
http |
SWOOLEFONY_IP |
The IP address to bind the Swoole server to. | 0.0.0.0 |
SWOOLEFONY_PORT |
The port to for the Swoole server to listen on. | 80 |
SWOOLEFONY_SSL_CERT_FILE |
The path to the SSL cert file to use. | Not set. |
SWOOLEFONY_SSL_KEY_FILE |
The path to the SSL key file to use. | Not set. |
SWOOLEFONY_SSL_ALLOW_SELFSIGNED |
Whether or not to allow self-signed certificates (0 or 1 ). |
0 |
SWOOLEFONY_SSL_PROTOCOLS |
The SSL / TLS protcols to allow in a comma separated list: tls1.1 , tls1.2 , tls1.3 |
tls1.3,tls1.2 |
SWOOLEFONY_DAEMONIZE |
Whether the server should run as a daemon (0 or 1 ). If so, the entry point returns immediately. |
0 |
The runtime class will look for those environment variables and use them if they exist. Otherwise it will fallback to the default values that are listed.
The following attributes are available on the request class (Request->attributes
) when it is processed by Symfony:
Attribute Name | Description | Value Type |
---|---|---|
swoolefony.id |
The Swoole specific request ID (fd). | int |
swoolefony.mode |
The server mode Swoole is running in. Either http or websocket |
string |
The following container services are available:
Service Name | Description | Class |
---|---|---|
swoolefony.server |
The Swoole server instance running for this request. | \Swoolefony\SwooleBundle\Server\ServerInterface |