Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/amphp/mysql
An async MySQL client for PHP, optimizing database interactions with efficient non-blocking capabilities. Perfect for responsive, high-performance applications.
https://github.com/amphp/mysql
amphp async mysql php revolt
Last synced: 26 days ago
JSON representation
An async MySQL client for PHP, optimizing database interactions with efficient non-blocking capabilities. Perfect for responsive, high-performance applications.
- Host: GitHub
- URL: https://github.com/amphp/mysql
- Owner: amphp
- License: other
- Created: 2014-11-18T14:26:40.000Z (almost 10 years ago)
- Default Branch: 3.x
- Last Pushed: 2024-03-10T17:34:38.000Z (8 months ago)
- Last Synced: 2024-05-05T09:42:22.176Z (6 months ago)
- Topics: amphp, async, mysql, php, revolt
- Language: PHP
- Homepage:
- Size: 1.14 MB
- Stars: 346
- Watchers: 24
- Forks: 62
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# amphp/mysql
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 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)
- 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)
## Installation
This package can be installed as a [Composer](https://getcomposer.org/) dependency.
```bash
composer require amphp/mysql
```## Requirements
- PHP 8.1+
## Usage
More extensive code examples reside in the [`examples`](examples) directory.
```php
use Amp\Mysql\MysqlConfig;
use Amp\Mysql\MysqlConnectionPool;$config = MysqlConfig::fromString(
"host=localhost user=username password=password db=test"
);$pool = new MysqlConnectionPool($config);
$statement = $pool->prepare("SELECT * FROM table_name WHERE id = :id");
$result = $statement->execute(['id' => 1337]);
foreach ($result as $row) {
// $row is an associative-array of column values, e.g.: $row['column_name']
}
```## Versioning
`amphp/mysql` follows the [semver](http://semver.org/) semantic versioning specification like all other `amphp` packages.
## Security
If you discover any security related issues, please use the private security issue reporter instead of using the public issue tracker.
## License
The MIT License (MIT). Please see [`LICENSE`](./LICENSE) for more information.