ストリーミング -- 大規模なレコードセットのストリーミング方法
説明
レコードセットが大きすぎると、PHP のメモリ制限をオーバーしていしまうこともありえます。
Structures_DataGrid では、このような場合のためのストリーミングのサポートを、
大半のデータソースと一部のレンダラで提供しています。
これを使用することで、メモリ制限による問題を回避することができます。
どうやってストリーミング機能を使うの?
ストリーミング機能を有効にするには、Structures_DataGrid オブジェクトの
enableStreaming() メソッドをコールします。
オプションのパラメータで、読み書き時にストリームの各単位で処理するレコード数を指定することができます。
デフォルトの大きさは 500 レコードです。
ストリーミングを有効にすると、バッファサイズで指定した件数までしか読み込みやレンダリングを行いません。
レコードを全件処理するためには、この処理を繰り返します。
例 62-1バッファサイズを 1000 レコードにしてストリーミング機能を有効にする <?php
require 'Structures/DataGrid.php';
// DataGrid のインスタンスを作成します
$datagrid =& new Structures_DataGrid();
// ストリーミングを有効にし、バッファサイズを 1,000 レコードにします
$datagrid->enableStreaming(1000);
// ... ここで、いつもどおり bind() や render() をコールします
?> |
|
ストリーミングをサポートするドライバ
すべてのデータソースドライバでストリーミングを使用することができますが、
実際に意味のある動作をするのは DataObject、DBQuery、
DB_Table および MDB2 ドライバのみです。CSV や XML データソースについても、
ストリーミング機能の追加が検討されています。
同じくすべてのレンダラについてストリーミングを使用することができますが、
現時点では、意味のある動作をするのは CSV および XML レンダラのみです。
他のレンダラについても、将来的にはストリーミングをサポートするよう書き直す予定です。