私はjson_decodeしようとする大きなjsonファイル(7.3MB)を持っており、メモリ制限(致命的なエラー:134217728バイトのメモリサイズが使い尽くされているため)で失敗します。 jsonファイルを一度に1つのオブジェクト/ノードでシリアルにデコードする方法はありますか?メモリ制限によるシリアルjson_decode
答えて
理論的には、文字列の先頭と末尾の文字を解析するロジックを記述し、オブジェクト/配列表現を構築しながらメモリ内の文字列サイズを繰り返し減らすことができますが、それは深刻な痛みになります。
メモリの容量を増やすだけでなく、頻繁にデコードする必要があるJSON(ウェブアプリケーションへのリクエストごと)が必要な場合は、より多くの使用コンポーネントに分割することを検討する必要があります。
これは理屈上の問題ですが、メモリを増やすことができますが、jsonサイズが3GBの場合はどうなるでしょうか。 すべての{}記号を数え、レベル1、オブジェクト999999などで開始できるようにするライブラリがあるかどうかを尋ねています(ファイルのどこにあっても、 )そしてそこからオブジェクトやサブオブジェクトを一度にデコードする –
'json_decode'関数の2番目のパラメータ(' bool $ assoc = false')を有効にしようとしましたか?これは、JSONをオブジェクトの代わりに単純な配列に格納して、メモリを節約することができます。 – MatRt
これで十分でない場合は、独自の単純なパーサーを作成する必要があります。それは、SAX JSONパーサのPHP実装がないようです – MatRt
- 1. EhCacheメモリ制限
- 2. が無制限のメモリ制限
- 3. iPadのメモリ制限
- 4. PHPのメモリ制限
- 5. Magento2 php7メモリ制限
- 6. Arduinoのメモリ制限
- 7. python2.7メモリ制限リリース
- 8. PHPのメモリ制限
- 9. Leveldb制限テスト - 制限プログラムによって使用されるメモリ
- 10. C#シリアル受信制限
- 11. R内のapcluster:メモリ制限
- 12. 制限メモリの使用Unix
- 13. アンドロイドアプリのメモリの制限
- 14. SQL Serverメモリ制限ソリューション
- 15. Pimcoreメモリ制限のエラー
- 16. WPメモリ制限 - 私は
- 17. PHPメモリ制限のデバッグ
- 18. php mpdfメモリ制限エラー
- 19. VB 6メモリの制限
- 20. java opencvネイティブライブラリとメモリ制限
- 21. ToranプロキシのPHPメモリ制限
- 22. キーボード拡張のメモリ制限
- 23. QSUB無視メモリ制限
- 24. Herokuスケジューラの制限メモリ
- 25. C#アプリケーションによる制限されたメモリ使用
- 26. メモリ制限の増加による奇妙なエラー
- 27. ラケットのメモリ制限を指定する
- 28. クエリが許可されるメモリ制限
- 29. OpenHFT ChronicleMapのメモリ配置と制限
- 30. のHadoop Containderは、物理メモリの制限
あなたはこのようなものを考えましたか?ini_set( 'memory_limit'、 '256M'); '? – HamZa
カスタムパーサがyesの場合、json_decodeは文字列全体を読み込みます。とにかく結果オブジェクト全体をメモリに保存しようとするなら、十分なメモリを節約していないかもしれません。 – datasage
構造によって異なります。オブジェクトの配列であれば、レベル1でのデコードを再開することは、どのパーサでも簡単です。 PEARs Services_Jsonまたはupgradephp/json_decodeは、そのようなものに対しては確かにハッキングされる可能性があります。ネストされた構造体を繰り返し解析することは、JSONパーサーが通常実装される再帰的な方法のために、より面倒です。 – mario