Ich habe einige ernste Probleme mit den PHP-Datenobjektfunktionen. Ich versuche, eine beträchtliche Ergebnismenge (~ 60.000 Zeilen, ~ 1gig) mit einer gepufferten Abfrage zu durchlaufen, um zu vermeiden, dass die gesamte Menge abgerufen wird.PHP PDO gepuffertes Abfrageproblem
Egal, was ich tue, hängt das Skript nur auf der PDO :: query() - es scheint, dass die Abfrage ungepuffert ausgeführt wird (warum sonst würde die Änderung in der Größe der Ergebnismenge das Problem beheben). Hier ist mein Code, um das Problem zu reproduzieren:
Wenn ich begrenzen die Abfrage mit einer vernünftigen Anzahl, es funktioniert gut:
$rQuery = $Database->query('SELECT id FROM mytable LIMIT 10');
Ich habe versucht, mit PDO :: MYSQL_ATTR_MAX_BUFFER_SIZE zu spielen und mit dem PDO :: prepare() und PDO :: execute() ebenfalls (obwohl es in der obigen Abfrage keine Parameter gibt), beide vergebens. Jede Hilfe wäre willkommen.
Wow okay, ich bin ein Idiot zu verwenden . Ich weiß nicht, was mir den gegenteiligen Eindruck gemacht hat. – Stewart
Technisch bedeutet eine "gepufferte" Abfrage, dass die MySQL-Client-Bibliothek das gesamte Resultset aus dem TCP-Stream zieht, bevor es an Sie zurückgegeben wird. – staticsan
Hmm, ich dachte das Handbuch behandelt den Unterschied zwischen gepuffert/ungepuffert (mysql style) und fetch/fetchAll (PDO style), aber wenn ich es nochmal anschaue, dann nicht. Wenn Sie weitere Hintergrundinformationen wünschen, finden Sie unter Umständen folgendes: http://netevil.org/blog/2008/06/slides-pdo –