Ding-Ding-Ding!
Beim Verbinden mit MySQL verwendet PHP gerne gepufferte Abfragen . Dies gilt unabhängig davon, welche Methode Sie zum Herstellen einer Verbindung verwenden. Wenn Sie gepufferte Abfragen verwenden, wird die gesamte Ergebnismenge sofort abgerufen, anstatt auf Ihre Anfrage hin abgerufen zu werden. Dies ist normalerweise der Fall gut für die Leistung, da es weniger Roundtrips gibt.
Aber wie alles in PHP gibt es einen Haken. Wie auf der Pufferseite angegeben:
Sie verwenden PHP 5.3, was bedeutet, dass Sie wahrscheinlich mysqlnd verwenden.
Hier sollten Sie gepufferte Abfragen deaktivieren. Das wird in jeder PHP-Schnittstelle zu MySQL anders gemacht:
- Für PDO müssen Sie
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY
festlegen Attribut auffalse
. - Für mysqli müssen Sie den
MYSQLI_USE_RESULT
übergeben Konstante zurquery
Methode. - Für MySQL müssen Sie
mysql_unbuffered_query
aufrufen stattmysql_query
.
Vollständige Details und Beispiele finden Sie auf der Seite.
Große, fette ungepufferte Abfragen!
Sie müssen Schließen Sie das Anweisungshandle ordnungsgemäß und geben Sie die Ergebnismenge frei, bevor Sie eine weitere Abfrage ausführen:
- In PDO bedeutet dies den Aufruf von
closeCursor
auf dem Statement-Handle. - In mysqli bedeutet dies den Aufruf von
free_result
auf dem Statement-Handle oderfree
auf dem Ergebnishandle, je nachdem, womit Sie arbeiten. - In mysql bedeutet dies den Aufruf von
mysql_free_result
Andernfalls wird ein Fehler ausgegeben.