Connection Pool

Notice: ext-swoole is supported until v4.7.1, use ext-openswoole >= v4.7.1. Latest version: pecl install openswoole-4.10.0

General coroutine based connection pool implmentated with Channel.

Connection pool is used to reduce the TCP reconnect overhead, can be used to increase the application performance.

You can use the build-in ConnectionPool to manage a pool of connection to storage servers or remote services.


  • Swoole\ConnectionPool->__construct
  • Swoole\ConnectionPool->make
  • Swoole\ConnectionPool->fill
  • Swoole\ConnectionPool->get
  • Swoole\ConnectionPool->put
  • Swoole\ConnectionPool->close


    use Swoole\Coroutine;
    use Swoole\Database\RedisConfig;
    use Swoole\Database\RedisPool;
    use Swoole\Runtime;
    const N = 10;
    Coroutine\run(function () {
        $pool = new RedisPool((new RedisConfig)
        for ($n = N; $n--;) {
            Coroutine::create(function () use ($pool) {
                $redis = $pool->get();
                $result = $redis->set('foo', 'bar');
                if (!$result) {
                    throw new RuntimeException('Set failed');
                $result = $redis->get('foo');
                if ($result !== 'bar') {
                    throw new RuntimeException('Get failed');