


So lösen Sie das Problem des übermäßigen Speichers bei der Verwendung von mysql_query zum Abfragen sehr großer Ergebnismengen in PHP
MySQL-Abfrage bietet auch eine weitere Abfragemethode. Der Funktionsname lautet mysql_unbuffered_query. Diese Funktion verwendet die Ergebnismenge unmittelbar nach dem Finden des Ergebnisses und speichert sie nicht im Speicher, wodurch eine Speicherüberschreitung vermieden wird . Der Preis für die Verwendung dieser Methode besteht jedoch darin, dass Sie bei der Abfrage keine Methoden wie das Abrufen des Hauptsitzes verwenden können, da diese Methode bei der Abfrage Ergebnisse zurückgibt. Gleichzeitig können Sie bei Verwendung dieser Methode keine anderen Vorgänge auf derselben Datenbankverbindung ausführen. Wenn Sie andere Vorgänge ausführen möchten, müssen Sie zunächst den aktuellen Vorgang beenden, alle durch nicht zwischengespeicherte SQL-Abfragen generierten Ergebniszeilen freigeben oder eine erneute Instanziierung durchführen Eine Datenbank verbinden und den neuen Link für andere Aktionen verwenden.
Das Folgende ist ein Vergleich zwischen der Verwendung des Caches und der Nichtverwendung des Caches (die abgefragte Tabelle enthält mehr als 10 Millionen Datenzeilen):
function selecttest() { try { $pdo = new PDO("mysql:host=localhost;dbname=test", 'root', '123456'); // 不使用缓存结果集方式 // $pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false); $sth = $pdo->prepare('select * from test'); $sth->execute(); echo '最初占用内存大小:' . memory_get_usage() . "\n"; $i = 0; while ($result = $sth->fetch(PDO::FETCH_ASSOC)) { $i += 1; if ($i > 10) { break; } sleep(1); print_r($result); echo '占用内存大小:' . memory_get_usage() . "\n"; } } catch (Exception $e) { echo $e->getMessage(); } }
Das Obige gilt Alle Ergebnisse zwischenspeichern. Beim Ausführen dieser Funktion wird ein übermäßiger Speicherfehler gemeldet, wie unten gezeigt:
Schwerwiegender Fehler: Zulässige Speichergröße von 134217728 Bytes erschöpft (versucht, 204800000 Bytes zuzuweisen) in E:ProgramDevelopmentRuntimeEnvironmentxampphtdocstesttest .php in Zeile 57
Call Stack:
0.0005 135392 1. {main}() E:ProgramDevelopmentRuntimeEnvironmentxampphtdocstesttest.php:0
0.0005. 1 35568 2. Test-> süß (); Speicherlimit;
Entfernen Sie den Kommentar // $pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY); und diese Zeile verwendet die Methode, die Ergebnismenge nicht zwischenzuspeichern Diese Funktion gibt den folgenden Inhalt aus:
Anfänglich belegte Speichergröße: 144808
Belegte Speichergröße: 145544
Array ( [id] => 1 [a] => v [b] => w [c] => i )
Belegte Speichergröße: 145544
Array ( [id] => 2 [a] => b [b] => l [c] => q )
Speichergröße belegt: 145536
Array ( [id] => 3 [a] => m [b] => p [c] => h )
Speichergröße belegt: 145536
Array ( [id] => 4 [a] => j [b] => i [c] => b )
Speichergröße belegt: 145536
Array ( [id] => 5 [a] => q [b] => g [c] => g )

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



In dem Artikel werden mithilfe der Änderungstabelle von MySQL Tabellen, einschließlich Hinzufügen/Löschen von Spalten, Umbenennung von Tabellen/Spalten und Ändern der Spaltendatentypen, erläutert.

In Artikel werden die Konfiguration der SSL/TLS -Verschlüsselung für MySQL, einschließlich der Erzeugung und Überprüfung von Zertifikaten, erläutert. Das Hauptproblem ist die Verwendung der Sicherheitsauswirkungen von selbstsignierten Zertifikaten. [Charakterzahl: 159]

In Artikel werden Strategien zum Umgang mit großen Datensätzen in MySQL erörtert, einschließlich Partitionierung, Sharding, Indexierung und Abfrageoptimierung.

In Artikel werden beliebte MySQL -GUI -Tools wie MySQL Workbench und PhpMyAdmin beschrieben, die ihre Funktionen und ihre Eignung für Anfänger und fortgeschrittene Benutzer vergleichen. [159 Charaktere]

In dem Artikel werden in MySQL die Ablagerung von Tabellen mithilfe der Drop -Tabellenerklärung erörtert, wobei Vorsichtsmaßnahmen und Risiken betont werden. Es wird hervorgehoben, dass die Aktion ohne Backups, die Detaillierung von Wiederherstellungsmethoden und potenzielle Produktionsumfeldgefahren irreversibel ist.

In dem Artikel werden in verschiedenen Datenbanken wie PostgreSQL, MySQL und MongoDB Indizes für JSON -Spalten in verschiedenen Datenbanken erstellt, um die Abfrageleistung zu verbessern. Es erläutert die Syntax und die Vorteile der Indizierung spezifischer JSON -Pfade und listet unterstützte Datenbanksysteme auf.

In Artikeln werden ausländische Schlüssel zur Darstellung von Beziehungen in Datenbanken erörtert, die sich auf Best Practices, Datenintegrität und gemeinsame Fallstricke konzentrieren.

Artikel erläutert die Sicherung von MySQL gegen SQL-Injektions- und Brute-Force-Angriffe unter Verwendung vorbereiteter Aussagen, Eingabevalidierung und starken Kennwortrichtlinien (159 Zeichen).
