MySQL Connection Pool in PHP

Learn how to query and update data in MySQL databases.

AMPHP is a collection of event-driven libraries for PHP designed with fibers and concurrency in mind. amphp/mysql is an asynchronous MySQL client. The library allows to dynamically query a server with multiple MySQL connections concurrently. The client transparently distributes these queries across a scalable pool of available connections and does so using 100% userland PHP; there are no external extension dependencies (e.g. ext/mysqli, ext/pdo, etc).


  • Exposes a non-blocking API for issuing multiple MySQL queries concurrently
  • Transparent connection pooling to overcome MySQL’s fundamentally synchronous connection protocol
  • MySQL transfer encoding support (gzip, TLS encryption)
  • Full MySQL protocol support including all available commands asynchronously

† As documented in official Mysql Internals Manual


This package can be installed as a Composer dependency.

composer require amphp/mysql

This package requires PHP 8.1 or later.


More extensive code examples reside in the examples directory.

$config = Amp\Mysql\MysqlConfig::fromString(
    "host= user=username password=password db=test"

$pool = new Amp\Mysql\MysqlConnectionPool($config);

$statement = $pool->prepare("SELECT * FROM table_name WHERE id = :id");
foreach ($statement->execute(['id' => 1337]) as $row) {
    // $row is an associative array of column values. e.g.: $row['column_name']


amphp/mysql follows the semver semantic versioning specification like all other amphp packages.


If you discover any security related issues, please email [email protected] instead of using the issue tracker.


The MIT License (MIT). Please see LICENSE for more information.