« どの API を使うか
コンセプト »

どのライブラリを選ぶか

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 Native Driver (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 オプション
関連キーワード:
ライブラリ   mysqlnd   MySQL   libmysqlclient   コンパイル   mysql   mysqli   configure   拡張   方法   配布   接続   クエリ   path   config   開発   ライセンス   進行中   予定   メモリ   数値   カラム   コンセプト   ドライバ   概要
関連する関数・ページ:
mysql.installation   mysqli.installation   mysqlnd.install   mysqlnd.plugin.obtaining   mysqli.overview   mysqli.options