Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PDO schlägt mit zu vielen Datensätzen fehl, gepufferte Abfragen

Wenn Sie eine ungepufferte Abfrage verwenden, bedeutet dies, dass Ihre Ergebnismenge vom MySQL-Server gestreamt wird. Die Verbindung, auf der die (ungepufferte) Abfrage ausgeführt wird, ist also ausgelastet, bis Sie die letzte Zeile der Abfrage gelesen haben. In Ihrem Fall ist die Verbindung $MysqlConn .

(Eine gepufferte Abfrage schlürft die gesamte Ergebnismenge in den Arbeitsspeicher Ihres PHP-Programms und gibt die Verbindung frei. Sie verwenden ungepufferte Abfragen, wenn Ihre gesamte Ergebnismenge nicht in den Arbeitsspeicher passt).

Ungepufferte Abfragen sollten explizit geschlossen werden, wenn Sie damit fertig sind. Also fügen Sie einen closeCursor() hinzu anrufen . So.

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

Es schadet auch nicht, gepufferte Abfragen zu schließen. Es ist eine gute Angewohnheit.