Swoole Library
, (*1)
Dockerized Local Development
First, run one of the following commands to install development packages using Composer:, (*2)
docker run --rm -v "$(pwd)":/var/www -ti phpswoole/swoole composer update -n
# or, use the official Composer Docker image:
docker run --rm -v "$(pwd)":/app -ti composer update -n --ignore-platform-reqs
# or, use the local Composer if installed:
composer update -n --ignore-platform-reqs
Next, you need to start Docker containers:, (*3)
docker compose up -d
Alternatively, if you need to rebuild some Docker image and to restart the containers:, (*4)
docker compose build --progress plain --no-cache
docker compose up -d --force-recreate
Now you can create a bash
session in the app
container:, (*5)
docker compose exec app bash
And run commands inside the container:, (*6)
composer test
Or you can run commands directly inside the app
container:, (*7)
docker compose exec app composer test
Examples
Once you have Docker containers started (as discussed in previous section), you can use commands like following to run
examples under folder examples., (*8)
Examples of Database Connection Pool
docker compose exec app php examples/mysqli/base.php
docker compose exec app php examples/pdo/base.php
docker compose exec app php examples/redis/base.php
Examples of FastCGI Calls
There is a fantastic example showing how to use Swoole as a proxy to serve a WordPress website using PHP-FPM. Just
open URL http://127.0.0.1 in the browser and check what you see there. Source code of the example can be
found here., (*9)
Here are some more examples to make FastCGI calls to PHP-FPM:, (*10)
docker compose exec app php examples/fastcgi/greeter/call.php
docker compose exec app php examples/fastcgi/greeter/client.php
docker compose exec app php examples/fastcgi/proxy/base.php
docker compose exec app php examples/fastcgi/var/client.php
Third Party Libraries
Here are all the third party libraries used in this project:, (*11)
You can find the licensing information of these third party libraries here., (*12)
License
This project follows the Apache 2 license., (*13)