我正在研究可访问API的cron脚本,可接收JSON文件(大量对象)并将其存储在本地。完成后,另一个脚本需要解析下载的JSON文件,并将每个对象插入MySQL数据库。
我目前正在使用file_get_contents()和json_decode()。这将尝试在尝试处理之前将整个文件读入内存。除了我的JSON文件通常在250MB-1GB +之间的事实之外,这将很好。我知道我可以增加我的PHP内存限制,但这在我看来似乎并不是最大的答案。我知道我可以运行fopen()并fgets()逐行读取文件,但是我需要通过每个json对象读取文件。
file_get_contents()
json_decode()
fopen()
fgets()
有没有一种方法可以读取每个对象的文件,或者还有另一种类似的方法?
这实际上取决于json文件包含的内容。
如果不能将文件一枪打开到内存中,那么您唯一想到的另一个选择就是fopen / fgets。
可以逐行读取,并且如果这些json对象具有一致的结构,则可以轻松检测文件中的json对象何时开始和结束。
收集完整个对象后,将其插入数据库,然后继续下一个。
没什么更多的了。取决于您的数据源,检测json对象的开始和结束的算法可能会变得复杂,但是我之前使用复杂得多的结构(xml)进行了类似的操作,并且效果很好。