Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

PDO falhando com muitos registros, consultas em buffer


Quando você usa uma consulta sem buffer, isso significa que seu conjunto de resultados está sendo transmitido do servidor MySQL. Portanto, a conexão na qual a consulta (sem buffer) é executada fica ocupada até que você leia a última linha da consulta. No seu caso a conexão é $MysqlConn .

(Uma consulta em buffer absorve todo o conjunto de resultados na RAM do seu programa php e libera a conexão. Você usa consultas sem buffer quando todo o conjunto de resultados não cabe na RAM).

As consultas sem buffer devem ser fechadas explicitamente quando você terminar com elas. Então adicione um closeCursor() ligue . Assim.
while ($row = $ordStat->fetch(PDO::FETCH_ASSOC)) {
    $order_ids[] = $row['order_id'];
}
$ordStat->closeCursor();

Não há mal em fechar consultas em buffer também. É um bom hábito.