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

Il PDO ext di PHP7 legge l'intero set di risultati in memoria?

Non è direttamente correlato a PHP7. Il problema è dovuto al nuovo mysqlnd driver, quindi puoi riscontrare lo stesso problema anche con PHP 5.x. In realtà è una correzione di bug, perché anche prima che la memoria fosse ancora allocata, ma non contava per memory_limit .

Per evitare problemi di memoria devi usare query senza buffer per i grandi risultati.

Quindi, per la query che prevede un set di dati di grandi dimensioni, imposta l'impostazione corretta in questo modo:

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

Per ulteriori letture, ho una spiegazione decente nel mio tutorial PDO , grazie a Nikic, il cui feedback critico è stato inestimabile.