mysqlnd

mysqlndは、PHP 5.4でMySQLを操作するためのデフォルトのドライバーであるPHP拡張です。 これはMySQLサーバーと直接連携するため、MySQLクライアントと連携するためのオーバーヘッドは不要になります!



画像







mysqli_fetch_all




MySQLを操作するためのAPI は変更されいません (mysqliおよびPDO拡張)にもかかわらず、mysqli拡張には新しい関数が登場しました。その中でmysqli_fetch_all関数を強調する価値があります。



以前は、完全なサンプル結果を取得するために、同様の構成を記述する必要がありました。



$result = mysqli_query($link, $query); $data = array(); while($row = mysqli_fetch_assoc($result)) { $data[] = $row; }
      
      







mysqli_fetch_allを使用する場合、そのような構成の使用を回避できます。



 $result = mysqli_query($link, $query); $data = mysqli_fetch_all($result, MYSQLI_ASSOC);
      
      







ネイティブメモリ管理




mysqlndはPHPの拡張機能であるため、MySQLで作業するときにメモリ割り当てを制御する(およびmemory_get_usage使用してメモリ割り当てに関する統計を確認する )機会があります。



つまり、以前は、$データ変数のサイズがスクリプトで指定されたメモリ割り当て制限を超えた場合にのみ、次のスクリプトがメモリ不足になる可能性がありましたが、データベースから受信したデータ量は無限に大きくなる可能性がありました:



 ini_set('memory_limit', '1M'); $result = mysqli_query($link, $query); $data = array(); while($row = mysqli_fetch_assoc($result)) { $data[] = $row; }
      
      







mysqlndを使用する場合、データベースからのデータ量がスクリプトで指定されたメモリ割り当て制限を超えると、そのようなスクリプトはメモリから落ちます。



ちなみに、mysqlndを使用している場合、LinuxのMySQLサーバーでmax_allowed_pa​​cketを超えるリクエストを送信すると、「1153:パケットがmax_allowed_pa​​cketバイトよりも大きくなりました」というエラーが表示されます。古いドライバーは「2006:サーバーがなくなった」というエラーを受け取ります。



非同期リクエスト




mysqlndは、MySQLで非同期クエリを実行する方法を提供します。つまり、クエリの結果がスクリプトの実行を継続するのを待つ必要はありません。



非同期クエリを実行するには、mysqli_queryでMYSQLI_ASYNCフラグを指定する必要があります



クエリ結果はmysqli_pollでチェックされ、リクエストが完了した場合、結果はmysqli_reap_async_queryで取得できます(この関数の注意に注意してください)。



残念ながら、非同期クエリを使用することのすべてのニュアンスを完全に理解し、誰かが興味を持っている場合は、非常に近い将来のケースで個別のレビューを提供しようとします。



UPD: mysqlndの非同期クエリに関する私の投稿はここで見ることができます



プラグイン




mysqlndは、非常に便利な拡張機能が生まれたおかげで、プラグインを作成するためのAPIを提供します



Mysqlndレプリケーションおよび負荷分散プラグイン



この拡張により、単純な設定を使用して、すべての読み取り要求をスレーブに送信し、要求をマスターに送信することで、MySQLでクエリを自動的に配布できます。



Mysqlndクエリ結果キャッシュプラグイン



この拡張機能を使用すると、最も一般的なキャッシュエンジン(APC、Memcache、SQLite、独自のエンジンを追加できます)のドライバーレベルでクエリ結果をキャッシュできます。



Mysqlndユーザーハンドラプラグイン



この拡張機能は、ドライバーの実行中に実行されるいくつかのフックを提供します。 これらのフックのハンドラーはPHPで記述でき、拡張機能クラスを継承します。



All Articles