sql >> Databáze >  >> RDS >> Mysql

PDO selhává s příliš mnoha záznamy, dotazy uložené ve vyrovnávací paměti

Když použijete dotaz bez vyrovnávací paměti, znamená to, že vaše sada výsledků je streamována ze serveru MySQL. Takže připojení, na kterém běží (bez vyrovnávací paměti) dotaz, je zaneprázdněné, dokud si nepřečtete poslední řádek dotazu. Ve vašem případě je připojení $MysqlConn .

(Dotaz s vyrovnávací pamětí přenese celou sadu výsledků do paměti RAM vašeho php programu a uvolní připojení. Dotazy bez vyrovnávací paměti použijete, když se celá sada výsledků nevejde do paměti RAM).

Dotazy bez vyrovnávací paměti by měly být explicitně uzavřeny, když s nimi skončíte. Takže přidejte closeCursor() zavolat . Takhle.

while ($row = $ordStat->fetch(PDO::FETCH_ASSOC)) {
    $order_ids[] = $row['order_id'];
}
$ordStat->closeCursor();

Není na škodu zavřít i dotazy s vyrovnávací pamětí. Je to dobrý zvyk.




  1. externí databáze s Adobe CQ5?

  2. MySqlException:Vypršel časový limit – zvýšení časového limitu připojení nemělo žádný vliv

  3. Jak udělat innodb jako výchozí engine

  4. Spouštění více skriptů PHP současně (problém se smyčkou databáze)