小编典典

解析大型JSON文件[

json

我正在研究可访问API的cron脚本,可接收JSON文件(大量对象)并将其存储在本地。完成后,另一个脚本需要解析下载的JSON文件,并将每个对象插入MySQL数据库。

我目前正在使用file_get_contents()json_decode()。这将尝试在尝试处理之前将整个文件读入内存。除了我的JSON文件通常在250MB-1GB
+之间的事实之外,这将很好。我知道我可以增加我的PHP内存限制,但这在我看来似乎并不是最大的答案。我知道我可以运行fopen()fgets()逐行读取文件,但是我需要通过每个json对象读取文件。

有没有一种方法可以读取每个对象的文件,或者还有另一种类似的方法?


阅读 477

收藏
2020-07-27

共1个答案

小编典典

这实际上取决于json文件包含的内容。

如果不能将文件一枪打开到内存中,那么您唯一想到的另一个选择就是fopen / fgets。

可以逐行读取,并且如果这些json对象具有一致的结构,则可以轻松检测文件中的json对象何时开始和结束。

收集完整个对象后,将其插入数据库,然后继续下一个。

没什么更多的了。取决于您的数据源,检测json对象的开始和结束的算法可能会变得复杂,但是我之前使用复杂得多的结构(xml)进行了类似的操作,并且效果很好。

2020-07-27