Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O PDO do PHP7 lê todo o conjunto de resultados na memória?


Não é diretamente relacionado ao PHP7. O problema é devido ao novo mysqlnd driver, então você pode ter o mesmo problema mesmo com o PHP 5.x também. Na verdade, é uma correção de bug, porque mesmo antes de a memória ainda ser alocada, mas não contava para memory_limit .

Para evitar um problema de memória, você deve usar consultas sem buffer para os grandes conjuntos de resultados.

Portanto, para a consulta que espera um grande conjunto de dados, defina a configuração adequada como esta:
$pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);

Para leitura adicional, tenho uma explicação decente no meu tutorial PDO , graças a Nikic, cujo feedback crítico foi inestimável.