2016-08-23 4 views
0

Ich benötige Hilfe beim Codieren eines großen Arrays in JSON mit PHP's json_encode(). Das Array stammt aus einer lokalen Datenbank. Ich verwende JS, um JSON zu parsen. Das PHP-Skript, das das Array mit dem JSON-Format verarbeitet, wird jedoch beendet, wenn das Dataset zu groß ist. (d.h. 100.000 Ergebnisse). Ich habe versucht, meine memory_limit auf -1 und noch immer nicht helfen. Ist es möglich, ein großes Array mit PHP's json_encode() zu codieren?JSON_ENCODE kann kein großes Array codieren

Bitte lassen Sie mich wissen, wenn meine Frage zu verwirrend ist.

Danke euch allen!

+0

Das Problem mit 'JSON_ENCODE' in PHP ist, es neigt zu doppelten Anführungszeichen und Escaping-Sequenzen, die die tatsächliche Größe der JSON, die importiert wird, erhöhen würde, warum können Sie dies nicht auf der Clientseite behandeln? –

+0

@DavidR Das JSON-Format wird benötigt, da es von anderen verwendet wird (theoretisch). –

+0

@PaulCrovella Nur leere Seite. Die Seite hat gerade angehalten. –

Antwort

3

Wenn jede der Zeilen in Ihrem Array erfolgreich von json_encode codiert wurde, dann nutzen Sie diese Tatsache, indem Sie nur jede Zeile codieren und die Array-Struktur selbst auswerten.

Die

$prefix = ''; 
echo '['; 
foreach($rows as $row) { 
    echo $prefix, json_encode($row); 
    $prefix = ','; 
} 
echo ']'; 

ist Wenn die Verschachtelung komplexer ist, dann etwas ausführlichere Technik braucht eingesetzt werden, aber diese Technik hat mich gerettet, wenn ich das Problem gestoßen.

0

Die akzeptable Antwort ist

$prefix = ''; 
echo '['; 
foreach($rows as $row) { 
echo $prefix, json_encode($row); $prefix = ','; 
} 
echo ']'; 

oben gepostet.

Es ist jedoch immer noch keine Garantie zu arbeiten, wenn der Datensatz zu groß ist.

Die möglichen Lösungen sind die Abfrage begrenzen. Anstatt SELECT * zu verwenden. Wählen Sie einfach die Zeilen aus, die Sie benötigen, ABER in meinem Fall habe ich keine absolute Kontrolle über die Abfrage. Also wird diese Lösung nicht für mich funktionieren.

Die letzte ist, den Speicher unseres Servers oder sogar den Server selbst zu aktualisieren, um mit dem ständig wachsenden Datensatz Schritt zu halten.

Vielen Dank für Ihre Hilfe!