MySQL Native Driver とはなんだ?
PHPマニュアルの「Mysqlndの概要」 (http://php.net/manual/ja/mysqlnd.overview.php )には、以下の様に説明されていた。
MySQL データベースに接続するための API を提供するのは、 MySQL 拡張モジュールや mysqli そして PDO MYSQL です。これらの拡張モジュールが、MySQL Native Driver を使って MySQL サーバーと通信できるようになったということです。
とすると、mysqli や PDO MYSQL のMySQLドライバーは、なんだったんだ?
∑( ̄[] ̄;)!ホエー!!
この疑問に対して、PHPマニュアルの「インストール手順」( http://php.net/manual/ja/mysql.installation.php )では、PHP 5.3以降では、デフォルトで mysqlndなんだそうだ。
自分の使っているPHPのバージョンを調べると、以下のとおりなので、間違いなく Native Driver を使っているはずだ。
root@vagrant-ubuntu-trusty:/etc/php5/fpm# php -v
PHP 5.5.9-1ubuntu4.11 (cli) (built: Jul 2 2015 15:23:08)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
コマンドラインから、phpinfo()関数をコールして確認してみると、次のとおり有効(enabled)になっている。
root@vagrant-ubuntu-trusty:/etc/php5/fpm# php -r 'phpinfo();' |grep mysqlnd
/etc/php5/cli/conf.d/10-mysqlnd.ini,
Client API version => mysqlnd 5.0.11-dev - 20120503 - $Id: bf9ad53b11c9a57efdb1057292d73b928b8c5c77 $
Client API library version => mysqlnd 5.0.11-dev - 20120503 - $Id: bf9ad53b11c9a57efdb1057292d73b928b8c5c77 $
mysqlnd
mysqlnd => enabled
Version => mysqlnd 5.0.11-dev - 20120503 - $Id: bf9ad53b11c9a57efdb1057292d73b928b8c5c77 $
Loaded plugins => mysqlnd,debug_trace,auth_plugin_mysql_native_password,auth_plugin_mysql_clear_password,auth_plugin_sha256_password
mysqlnd statistics =>
Client API version => mysqlnd 5.0.11-dev - 20120503 - $Id: bf9ad53b11c9a57efdb1057292d73b928b8c5c77 $
以上、知らないうちに、Native Driver を使っていたわけだ。(゚-゚;)ウーン
Native Driver のプラグインが便利そう!
PHPマニュアル 「MySQL Native Driver プラグインAPI」(http://php.net/manual/ja/mysqlnd.plugin.php )によると、ネイティブ・ドライバーのプラグインには沢山の種類がある。
既にたくさんの mysqlnd プラグインが利用可能になっています。以下が含まれます。
PECL/mysqlnd_mc - 複数接続ができるプラグイン
PECL/mysqlnd_ms - マスタースレーブ構成用のプラグイン
PECL/mysqlnd_qc - クエリキャッシュプラグイン
PECL/mysqlnd_pscache - プリペアドステートメントハンドルをキャッシュするプラグイン
PECL/mysqlnd_sip - SQLインジェクションから防御するためのプラグイン
PECL/mysqlnd_uh - ユーザーハンドラープラグイン
これは試してみなければ、なるまい!