Unbuffered query, jak řešit v nette?
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Paradiso
- Člen | 101
Ahoj, máte někdo zkušenosti s unbuffered query v nette?
Zkoušel jsem to řešit takto:
$ndb; //\Nette\Database\Context
$ndb->connection->pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
$selection = $ndb->table('xxx')->where('....')->limit(900000);
while($row= $selection->fetch()){
....
ale paměť stejně přeteče. Dopodrobna jsem to nezkoumal, ale myslím si, že nette db si zjišťuje nějaká data navíc a proto to přeteče. Protože jinak mi přijde že v tom ResultSetu by nebyl problém.
zatím jsem to obešel, pro mě nehezky takto:
$ndb; //\Nette\Database\Context
$ndb->connection->pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
$selection = $ndb->table('xxx')->where('....')->limit(900000);
$uresult = $ndb->connection->pdo->prepare($selection->getSql());
$uresult->execute($selection->getSqlBuilder()->getParameters());
while($select = $uresult->fetch(PDO::FETCH_OBJ)){
....
ale raději bych, kdyby to šlo nějak přímo přes nette db. Nemáte s tím někdo zkušenosti?