Mysql
 sql >> Database >  >> RDS >> Mysql

PDO non riuscito con troppi record, query memorizzate nel buffer

Quando utilizzi una query senza buffer, significa che il tuo set di risultati viene trasmesso in streaming dal server MySQL. Pertanto, la connessione su cui viene eseguita la query (senza buffer) è occupata finché non si legge l'ultima riga della query. Nel tuo caso la connessione è $MysqlConn .

(Una query con buffer inserisce l'intero set di risultati nella RAM del tuo programma php e libera la connessione. Utilizzi query senza buffer quando l'intero set di risultati non si adatta alla RAM).

Le query non bufferizzate dovrebbero essere chiuse in modo esplicito quando hai finito con esse. Quindi aggiungi un closeCursor() chiama . Così.

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

Non c'è niente di male anche nel chiudere le query memorizzate nel buffer. È una buona abitudine.