sql >> Base de Datos >  >> RDS >> Mysql

PDO falla con demasiados registros, consultas almacenadas en búfer

Cuando utiliza una consulta sin búfer, eso significa que su conjunto de resultados se transmite desde el servidor MySQL. Por lo tanto, la conexión en la que se ejecuta la consulta (sin búfer) está ocupada hasta que lea la última fila de la consulta. En tu caso la conexión es $MysqlConn .

(Una consulta almacenada en búfer absorbe todo el conjunto de resultados en la RAM de su programa php y libera la conexión. Las consultas no almacenadas en búfer se utilizan cuando todo el conjunto de resultados no cabe en la RAM).

Las consultas sin búfer deben cerrarse explícitamente cuando haya terminado con ellas. Así que añade un closeCursor() llamar . Así.

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

No hay daño en cerrar consultas almacenadas en búfer también. Es un buen hábito.