2016-08-23 15 views
0

PHPのjson_encode()を使用してJSONに大きな配列をエンコードする際に助けが必要です。配列はローカルデータベースからのものです。 JSONを解析するためにJSを使用しています。しかし、データセットが大きすぎる場合は、配列からJSON形式を処理するPHPスクリプトが停止します。 (つまり、100,000件の結果)私はmemory_limitを-1にしようとしましたが、それでも助けにはなりません。 PHPのjson_encode()を使用して大きな配列をエンコードすることは可能ですか?JSON_ENCODEは大きな配列をエンコードできません

私の質問があまりにも混乱している場合は教えてください。

ありがとうございました!

+0

phpの 'JSON_ENCODE'の問題は、二重引用符とエスケープシーケンスを追加し、インポートされるJSONの実際のサイズを増やす傾向があることです。なぜこれをクライアント側で処理できませんか? –

+0

@DavidR他の人が(理論的に)使用するため、JSON形式が必要です。 –

+0

@PaulCrovella Just Blankページ。ページが停止しました。 –

答えて

3

アレイの各行がjson_encodeで正常にエンコードされている場合は、各行をエンコードして配列構造をエコーアウトするだけでその事実を利用してください。ネストは、より複雑な場合

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

ある

は、その後、もう少し詳細な技術が採用される必要があるが、私は問題が発生したときに、この技術は私を救いました。

0

許容答えは上記の投稿この

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

です。

ただし、データセットが大きすぎると動作することはまだ保証されていません。

可能な解決策は、クエリの制限です。 SELECT *を使用する代わりに。必要な行を選択するだけですが、私の場合は問合せを絶対に制御することはできません。だから、この解決策は私にとってはうまくいかないでしょう。

最後に、サーバーのメモリまたはサーバー自体をアップグレードして、継続的に増加するデータセットに追いつくことです。

ご協力いただきありがとうございます。

関連する問題