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

Est-ce que l'extension PDO de PHP7 lit l'intégralité du jeu de résultats en mémoire ?

Ce n'est pas directement lié à PHP7. Le problème est dû au nouveau mysqlnd pilote, vous pouvez donc rencontrer le même problème même avec PHP 5.x. Il s'agit en fait d'un correctif, car même avant que la mémoire ne soit encore allouée, mais elle ne comptait pas pour memory_limit .

Pour éviter un problème de mémoire, vous devez utiliser des requêtes non tamponnées pour les grands ensembles de résultats.

Ainsi, pour la requête qui attend un grand ensemble de données, définissez le paramètre approprié comme ceci :

$pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);

Pour aller plus loin, j'ai une explication décente dans mon tutoriel PDO , merci à Nikic, dont les commentaires critiques ont été inestimables.