Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Liest die PDO-Ext von PHP7 die gesamte Ergebnismenge in den Speicher?

Es ist nicht direkt mit PHP7 verwandt. Das Problem ist auf das neue mysqlnd zurückzuführen Treiber, sodass das gleiche Problem auch mit PHP 5.x auftreten kann. Es ist eigentlich ein Bugfix, denn auch vorher wurde noch Speicher allokiert, aber es zählte nicht zum memory_limit .

Um ein Speicherproblem zu vermeiden, müssen Sie ungepufferte Abfragen verwenden für die großen Ergebnismengen.

Legen Sie also für die Abfrage, die einen großen Datensatz erwartet, die richtige Einstellung wie folgt fest:

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

Für die weitere Lektüre habe ich eine anständige Erklärung in meinem PDO-Tutorial , danke an Nikic, dessen kritisches Feedback von unschätzbarem Wert war.