<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/mysql.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ja',
  ),
  'this' => 
  array (
    0 => 'mysqlinfo.library.choosing.php',
    1 => 'どのライブラリを選ぶか',
    2 => 'どのライブラリを選ぶか',
  ),
  'up' => 
  array (
    0 => 'mysql.php',
    1 => 'MySQL 用 PHP ドライバの概要',
  ),
  'prev' => 
  array (
    0 => 'mysqlinfo.api.choosing.php',
    1 => 'どの API を使うか',
  ),
  'next' => 
  array (
    0 => 'mysqlinfo.concepts.php',
    1 => 'コンセプト',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ja',
    'path' => 'reference/mysqlinfo/set.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="mysqlinfo.library.choosing" class="chapter">
   <h1 class="title">どのライブラリを選ぶか</h1>

   <p class="simpara">
    mysqli、PDO_MySQL といった PHP 拡張モジュールは、
    どれも C クライアントライブラリの軽量なラッパーです。これらの拡張モジュールは、
    <a href="book.mysqlnd.php" class="link">mysqlnd</a> ライブラリあるいは <code class="literal">libmysqlclient</code>
    ライブラリのいずれかを使えます。どちらを使うのかを決めるのは、コンパイル時です。
   </p>
   <p class="simpara">
    mysqlnd ライブラリは、PHP の一部として配布されています。
    遅延接続やクエリのキャッシュなど、libmysqlclient にはない機能も搭載されているので、
    この mysqlnd ライブラリを使うことを強くおすすめします。
    <a href="book.mysqlnd.php" class="link">mysqlnd のドキュメント</a>
    には、さらなる詳細情報や機能一覧があります。
   </p>
   <div class="example" id="example-1">
    <p><strong>例1 mysqlnd あるいは libmysqlclient を使う場合の configure コマンド</strong></p>
    <div class="example-contents">
<div class="shellcode"><pre class="shellcode">// おすすめの方法。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</pre>
</div>
    </div>

   </div>
   <p class="simpara">
    <strong>ライブラリの機能比較</strong>
   </p>
   <p class="simpara">
    <a href="book.mysqlnd.php" class="link">mysqlnd</a> を使うほうが、
    MySQL Client Server library (libmysqlclient) よりもおすすめです。
    どちらのライブラリも、開発が続いています。
   </p>
   <table id="mysqlinfo.library.choosing.changelog" class="doctable informaltable">
    
     <thead>
      <tr>
       <th class="empty">&nbsp;</th>
       <th>MySQL Native Driver (<a href="book.mysqlnd.php" class="link">mysqlnd</a>)</th>
       <th>MySQL クライアントサーバーライブラリ (<code class="literal">libmysqlclient</code>)</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>PHP の配布物に同梱</td>
       <td>Yes</td>
       <td>No</td>
      </tr>

      <tr>
       <td>どのバージョンの PHP から使えるか</td>
       <td>5.3.0</td>
       <td>N/A</td>
      </tr>

      <tr>
       <td>ライセンス</td>
       <td>PHP License 3.01</td>
       <td>デュアルライセンス</td>
      </tr>

      <tr>
       <td>開発状況</td>
       <td>進行中</td>
       <td>進行中</td>
      </tr>

      <tr>
       <td>ライフサイクル</td>
       <td>終了予定なし</td>
       <td>終了予定なし</td>
      </tr>

      <tr>
       <td>コンパイルのデフォルト (すべての MySQL 拡張モジュール)</td>
       <td>Yes</td>
       <td>No</td>
      </tr>

      <tr>
       <td>圧縮プロトコルへの対応</td>
       <td>Yes</td>
       <td>Yes</td>
      </tr>

      <tr>
       <td>SSL への対応</td>
       <td>Yes</td>
       <td>Yes</td>
      </tr>

      <tr>
       <td>名前付きパイプへの対応</td>
       <td>Yes</td>
       <td>Yes</td>
      </tr>

      <tr>
       <td>ノンブロッキングの非同期クエリ</td>
       <td>Yes</td>
       <td>No</td>
      </tr>

      <tr>
       <td>パフォーマンス統計</td>
       <td>Yes</td>
       <td>No</td>
      </tr>

      <tr>
       <td>LOAD LOCAL INFILE での <a href="ini.core.php#ini.open-basedir" class="link">open_basedir</a> の反映</td>
       <td>Yes</td>
       <td>No</td>
      </tr>

      <tr>
       <td>PHP ネイティブのメモリ管理システムを使う (PHP のメモリ制限などに従う)</td>
       <td>Yes</td>
       <td>No</td>
      </tr>

      <tr>
       <td>数値型のカラムを double 型で返す (COM_QUERY)</td>
       <td>Yes</td>
       <td>No</td>
      </tr>

      <tr>
       <td>数値型のカラムを string 型で返す (COM_QUERY)</td>
       <td>Yes</td>
       <td>Yes</td>
      </tr>

      <tr>
       <td>プラグイン API</td>
       <td>Yes</td>
       <td>Limited</td>
      </tr>

      <tr>
       <td>自動再接続</td>
       <td>No</td>
       <td>オプション</td>
      </tr>

     </tbody>
    
   </table>

  </div>
<?php manual_footer($setup); ?>