mysql

Build Status Code Coverage Release License

Ampで構築された非同期MySQLクライアント。


amp/mysql は、Amp同時実行フレームワーク上に構築された非同期MySQLクライアントです。ライブラリは、PromiseベースのAPIを公開して、複数のMySQL接続を同時に動的にクエリします。クライアントは、これらのクエリを利用可能な接続のスケーラブルなプール全体に透過的に分散し、100%ユーザーランドのPHPを使用して分散します。外部拡張の依存関係はありません(例: ext/mysqliext/pdo など)。

Features

  • シングルスレッドの完全な同時実行を可能にする非同期API
  • MySQLの基本的な同期接続プロトコルを克服する透過的なコネクションプーリング
  • MySQL転送エンコーディングのサポート(gzip、TLS暗号化)
  • すべてのMySQLコマンドのサポート

公式のMysql内部マニュアルに記載されているとおり

Project Goals

  • 複数のMySQLクエリを並列に発行するためのノンブロッキングAPIの公開
  • 完全なMySQLプロトコルと利用可能なすべてのコマンドを非同期でサポートする

Installation

このパッケージは、 Composerの依存関係としてインストールできます。

composer require amphp/mysql

Requirements

ドキュメントと例

より広範なコード例は、 examples ディレクトリにあります。

Amp\Loop::run(function() {
    $config = Amp\Mysql\ConnectionConfig::fromString(
        "host=127.0.0.1 user=username password=password db=test"
    );
    
    /** @var \Amp\Mysql\Pool $pool */
    $pool = Amp\Mysql\pool($config);
    
    /** @var \Amp\Mysql\Statement $statement */
    $statement = yield $pool->prepare("SELECT * FROM table_name WHERE id = :id");
    
    /** @var \Amp\Mysql\ResultSet $result */
    $result = yield $statement->execute(['id' => 1337]);
    while (yield $result->advance()) {
        $row = $result->getCurrent();
        // $ rowは、列値の連想配列です。例:$ row ['column_name']
    }
});

Versioning

amphp/mysql は、他のすべての amphp パッケージと同様に、semverセマンティックバージョニング仕様に従います。

Security

セキュリティ関連の問題を発見した場合は、問題追跡システムを使用する代わりに、 contact@amphp.org に電子メールを送信してください。

License

MITライセンス(MIT)。 LICENSE を参照してください。