From 0eb9d1df67c206c043b1a1c6ad7ba1bc2aa836bf Mon Sep 17 00:00:00 2001 From: Aaron Piotrowski Date: Sun, 10 Mar 2024 12:33:58 -0500 Subject: [PATCH] Update readme --- README.md | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 0995fd6..3bcc560 100644 --- a/README.md +++ b/README.md @@ -2,15 +2,17 @@ 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). +The library implements concurrent querying by transparently distributing queries across a scalable pool of available connections. 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.). ## Features - - 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 +- 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) +- Support for parameterized prepared statements +- Nested transactions with commit and rollback event hooks +- Unbuffered results to reduce memory usage for large result sets +- *Full* MySQL protocol support including *all* available commands asynchronously † As documented in [official Mysql Internals Manual](https://dev.mysql.com/doc/internals/en/client-server-protocol.html) @@ -22,22 +24,29 @@ This package can be installed as a [Composer](https://getcomposer.org/) dependen composer require amphp/mysql ``` -This package requires PHP 8.1 or later. +## Requirements + +- PHP 8.1+ ## Usage More extensive code examples reside in the [`examples`](examples) directory. ```php -$config = Amp\Mysql\MysqlConfig::fromString( - "host=127.0.0.1 user=username password=password db=test" +use Amp\Mysql\MysqlConfig; +use Amp\Mysql\MysqlConnectionPool; + +$config = MysqlConfig::fromString( + "host=localhost user=username password=password db=test" ); -$pool = new Amp\Mysql\MysqlConnectionPool($config); +$pool = new 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'] + +$result = $statement->execute(['id' => 1337]); +foreach ($result as $row) { + // $row is an associative-array of column values, e.g.: $row['column_name'] } ``` @@ -47,7 +56,7 @@ foreach ($statement->execute(['id' => 1337]) as $row) { ## Security -If you discover any security related issues, please email [`contact@amphp.org`](mailto:contact@amphp.org) instead of using the issue tracker. +If you discover any security related issues, please use the private security issue reporter instead of using the public issue tracker. ## License