处理大型json字符串的PHP
我需要与一个API通信,该API使用非常大的JSON响应进行响应。放入文件时,文件大小约为60MB。现在,当我想处理大型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中可能存在类似的问题。我最终改变了
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解析器进行测试,正如在可能的副本中提到的。