参见英文答案 >
Processing large JSON files in PHP5个
我正在使用一个cron脚本,它触发一个API,接收JSON文件(大量对象)并将其存储在本地.一旦完成,另一个脚本需要解析下载的JSON文件,并将每个对象插入到MysqL数据库中.
我正在使用一个cron脚本,它触发一个API,接收JSON文件(大量对象)并将其存储在本地.一旦完成,另一个脚本需要解析下载的JSON文件,并将每个对象插入到MysqL数据库中.
我正在使用一个file_get_contents()以及json_decode().在尝试处理之前,将尝试将整个文件读入内存.这是很好的,除了我的JSON文件通常在250MB-1GB的范围内.我知道我可以增加我的PHP内存限制,但这似乎不是我心中最大的答案.我知道我可以运行fopen()和fgets()逐行读取文件,但是我需要读取每个json对象的文件.
有没有办法读取每个对象的文件,还是有另一种类似的方法?
这真的取决于json文件包含什么.
如果将文件打开一个记忆不是一个选项,你唯一的其他选项,如你所说,是fopen / fgets.
逐行读取是可能的,如果这些json对象具有一致的结构,则可以轻松检测文件中的json对象何时启动,并结束.
收集整个对象后,将其插入数据库,然后转到下一个对象.
没有更多的东西.根据您的数据源,检测json对象的开始和结束的算法可能会变得复杂,但是我使用更复杂的结构(xml)完成了以前的工作,并且工作正常.