mysqli、PDO_MySQL といった PHP 拡張モジュールは、
どれも C クライアントライブラリの軽量なラッパーです。これらの拡張モジュールは、
mysqlnd ライブラリあるいは libmysqlclient
ライブラリのいずれかを使えます。どちらを使うのかを決めるのは、コンパイル時です。
mysqlnd ライブラリは、PHP の一部として配布されています。 遅延接続やクエリのキャッシュなど、libmysqlclient にはない機能も搭載されているので、 この mysqlnd ライブラリを使うことを強くおすすめします。 mysqlnd のドキュメント には、さらなる詳細情報や機能一覧があります。
例1 mysqlnd あるいは libmysqlclient を使う場合の configure コマンド
// おすすめの方法。mysqlnd を使ってコンパイルします。 $ ./configure --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd // もうひとつのおすすめの方法。mysqlnd を使ってコンパイルします。 $ ./configure --with-mysqli --with-pdo-mysql // おすすめしない方法。libmysqlclient を使ってコンパイルします。 $ ./configure --with-mysqli=/path/to/mysql_config --with-pdo-mysql=/path/to/mysql_config
ライブラリの機能比較
mysqlnd を使うほうが、 MySQL Client Server library (libmysqlclient) よりもおすすめです。 どちらのライブラリも、開発が続いています。
MySQL ネイティブドライバ (mysqlnd) | MySQL クライアントサーバーライブラリ (libmysqlclient ) |
|
---|---|---|
PHP の配布物に同梱 | Yes | No |
どのバージョンの PHP から使えるか | 5.3.0 | N/A |
ライセンス | PHP License 3.01 | デュアルライセンス |
開発状況 | 進行中 | 進行中 |
ライフサイクル | 終了予定なし | 終了予定なし |
コンパイルのデフォルト (すべての MySQL 拡張モジュール) | Yes | No |
圧縮プロトコルへの対応 | Yes | Yes |
SSL への対応 | Yes | Yes |
名前付きパイプへの対応 | Yes | Yes |
ノンブロッキングの非同期クエリ | Yes | No |
パフォーマンス統計 | Yes | No |
LOAD LOCAL INFILE での open_basedir の反映 | Yes | No |
PHP ネイティブのメモリ管理システムを使う (PHP のメモリ制限などに従う) | Yes | No |
数値型のカラムを double 型で返す (COM_QUERY) | Yes | No |
数値型のカラムを string 型で返す (COM_QUERY) | Yes | Yes |
プラグイン API | Yes | Limited |
自動再接続 | No | オプション |