Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
处理大型json字符串的PHP_Php_Json_Out Of Memory - Fatal编程技术网

处理大型json字符串的PHP

处理大型json字符串的PHP,php,json,out-of-memory,Php,Json,Out Of Memory,我需要与一个API通信,该API使用非常大的JSON响应进行响应。放入文件时,文件大小约为60MB。现在,当我想json\u decode()响应时,我的内存已经用完了。可以设置更高的内存限制,在+/-512MB时可以json\u decode()字符串。但这不是我想要的解决方案 处理如此大的响应而不受内存限制的最佳方法是什么 注: 我知道,对于大型CSV文件,可以逐行读取文件。但是因为我需要先进行json_解码,所以我必须立即读取整个文件。我的REST API中可能存在类似的问题。我最终改变了

我需要与一个API通信,该API使用非常大的JSON响应进行响应。放入文件时,文件大小约为60MB。现在,当我想
json\u decode()
响应时,我的内存已经用完了。可以设置更高的内存限制,在+/-512MB时可以
json\u decode()
字符串。但这不是我想要的解决方案

处理如此大的响应而不受内存限制的最佳方法是什么

注:
我知道,对于大型CSV文件,可以逐行读取文件。但是因为我需要先进行json_解码,所以我必须立即读取整个文件。

我的REST API中可能存在类似的问题。我最终改变了规则,能够用原始数据说
POST/v1/foo/bar/raw
,而
POST/v1/foo/bar
仍然接受JSON。然后在API内部使用
fopen('php://input“)
获取大型发布数据的文件句柄。您还可以做的可能重复的事情是使用一个
PUT
目标来获取一个巨大的原始文件,API将存储该文件并将唯一标识符返回给客户端,然后,当你想处理它时,在一个单独的请求中引用它。@amphetamachine,API不在我手中,我只需要从API获取数据。我不能更改API,我只需要处理响应。目前我正在使用这个JSON解析器进行测试,正如在可能的副本中提到的。