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_QUERYfestlegen Attribut auffalse. - Für mysqli müssen Sie den
MYSQLI_USE_RESULTübergeben Konstante zurqueryMethode. - Für MySQL müssen Sie
mysql_unbuffered_queryaufrufen 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
closeCursorauf dem Statement-Handle. - In mysqli bedeutet dies den Aufruf von
free_resultauf dem Statement-Handle oderfreeauf dem Ergebnishandle, je nachdem, womit Sie arbeiten. - In mysql bedeutet dies den Aufruf von
mysql_free_result
Andernfalls wird ein Fehler ausgegeben.