Daten aus MYSQL in JSON mit PHP holen

7

Ich habe den folgenden ziemlich einfachen Test-PHP-Code, der die Daten extrahiert und sie in JSON-formatierten Text einfügt.

Ich bekomme den folgenden Fehler ..

  

Fataler Fehler: Erlaubte Speichergröße von 33554432 Bytes erschöpft (versucht, 1979603 Bytes zuzuweisen) in /var/www/test.php in Zeile 33

Wo Zeile 33 die json_encode() -Zeile ist.

Gibt es eine Möglichkeit, dies effizienter zu machen? Der PHP.ini ist bereits auf 32M als max gesetzt, also vom 8M-Standard her gesehen!

%Vor%     
Lee Armstrong 27.01.2011, 12:26
quelle

5 Antworten

16

Sie codieren wahrscheinlich einen sehr großen Datensatz. Sie können jede Zeile einzeln codieren, anstatt sie in einem großen Vorgang zu codieren.

%Vor%

Auf diese Weise codiert jeder Aufruf von json_encode() nur ein kleines Array anstelle eines großen. Das Endergebnis ist das gleiche. Dies ist IMO die Lösung, die weniger Speicherplatz benötigt.

    
Andrew Moore 27.01.2011, 12:34
quelle
10

Beenden Sie das Duplizieren Ihres Datenbereichs

%Vor%

hilft dabei, die Speichernutzung zu reduzieren

    
Mark Baker 27.01.2011 12:29
quelle
7

Verwenden Sie diesen:

%Vor%     
Rohit Suthar 29.11.2012 12:57
quelle
0

Als ersten Work-Around setzen Sie es auf 256M oder sogar 512M.

Es ist wahrscheinlich, dass der Datensatz, den MySQL Ihnen zurückgibt, ziemlich groß ist. Selbst wenn Ihr PHP sehr speichereffizient ist, erhalten Sie immer noch den OoM-Fehler. Als langfristige Lösung nutzen Sie die Anweisung LIMIT ( SELECT * FROM $table WHERE 1=1 LIMIT 0,30 (beginnend mit Index 0, 30 Elemente).

EDIT: Oh wow, ich habe das Problem nicht einmal von der ersten Lösung aus gesehen ... Nun, vielleicht ist es trotzdem eine gute Idee, LIMIT deine Frage: -)

    
Zsub 27.01.2011 12:28
quelle
0

Hier ist mein erster Json, der perfekt funktioniert

%Vor%     
Ananth 01.03.2014 10:27
quelle

Tags und Links