ORM索結果:配列vs結果の取扱に包まれたIteratorインタフェース
-
22-08-2019 - |
質問
大丈夫、このプロの:
カップルの、できないかなぁ、とおもって、自分のPHP ORM/ActiveRecordの実装について 豚肉でできています。dbObject.
でloosly"に基づき独自のサイトとレールの5分の映画をすべて見のカップル。できないようなもの:
$clients = dbObject::Search("Client", array("ID > 500"));
または
$client = new Client(218); // fetch row with id 218 from client table
または
$projects = $client->Find('Project');
この取得は行からのデータベースも手に入れることがdbObjectこと、そして一つの配列、またはfalseを返すのはありません。
それらはすべて作業を完全に数十拠点除去すが、今の私の同僚での使用を作成する巨大なlogparserこのメモリ使用量問題..
の質問に彼は行き過20.000行ったり、昇、雨などの天候によりない非常に良いものを包ブラッパーを一度に返し配列の型になります。
は、あなたがいることでしょうを返しオブジェクトを実装する 反復子 フィールドの配列になります。でよいはずがありませんが瞬時に取得すべてのデータからのresultsetオでの結果の生データベースのクエリを使mysql_fetch_*内部ときにトラバースのオブジェクトがこの配列になります。
今まで私が実際の問題:したいので問題なく、うるのか?データベースに対応できる複数の開resultsets、ミックスして保存されなければならないメモリ。
例えば、フェッチ20オブジェ、ループし、それぞれの20取得5その他、既に自転も3を取得す。これをループが複数の異なる結果の取扱に保管されます。
しかできないserializeのこれらのオブジェクトではできないのを実施するには問題なくでPHP5、またはデータベースの界面にだすのですか。
解決
によって異なりますのデータベースの利用、データベースの設定をします。
MySQL用する必要がありご利用のバッファーされます。にPDOいようになります:
$myPdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
すべてのデータをクライアントに送信する(同じでないとして取得でサポートに対するコミットメント.
その他(おそらくがインタビューを受けたことがある新しいデータベース接続きを検出するクエリを実行されている結果セットが開きます。
通常の mysql_query()
使用バッファリングされたクエリでで動作する複数の結果セット。