Mysql
 sql >> Base de données >  >> RDS >> Mysql

Échec du PDO avec trop d'enregistrements, requêtes mises en mémoire tampon

Lorsque vous utilisez une requête sans tampon, cela signifie que votre jeu de résultats est diffusé depuis le serveur MySQL. Ainsi, la connexion sur laquelle la requête (sans tampon) s'exécute est occupée jusqu'à ce que vous lisiez la dernière ligne de la requête. Dans votre cas, la connexion est $MysqlConn .

(Une requête mise en mémoire tampon engloutit l'ensemble des résultats dans la RAM de votre programme php et libère la connexion. Vous utilisez des requêtes non mises en mémoire tampon lorsque l'ensemble de vos résultats ne tient pas dans la RAM).

Les requêtes non tamponnées doivent être fermées explicitement lorsque vous en avez terminé avec elles. Alors ajoutez un closeCursor() appeler . Comme ça.

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

Il n'y a pas de mal à fermer également les requêtes mises en mémoire tampon. C'est une bonne habitude.